sr/drivers: add proper probe list to instances of all drivers

This commit is contained in:
Bert Vermeulen 2012-07-24 19:10:09 +02:00
parent b35c829306
commit 87ca93c504
5 changed files with 40 additions and 1 deletions

View File

@ -443,12 +443,13 @@ static int hw_init(void)
static GSList *hw_scan(GSList *options)
{
struct sr_dev_inst *sdi;
struct sr_probe *probe;
struct context *ctx;
GSList *devices;
struct ftdi_device_list *devlist;
char serial_txt[10];
uint32_t serial;
int ret;
int ret, i;
(void)options;
devices = NULL;
@ -499,6 +500,14 @@ static GSList *hw_scan(GSList *options)
goto free;
}
sdi->driver = adi;
for (i = 0; probe_names[i]; i++) {
if (!(probe = sr_probe_new(i, SR_PROBE_ANALOG, TRUE,
probe_names[i])))
return NULL;
sdi->probes = g_slist_append(sdi->probes, probe);
}
devices = g_slist_append(devices, sdi);
adi->instances = g_slist_append(adi->instances, sdi);
sdi->priv = ctx;

View File

@ -77,6 +77,7 @@ static int hw_init(void)
static GSList *hw_scan(GSList *options)
{
struct sr_dev_inst *sdi;
struct sr_probe *probe;
struct context *ctx;
GSList *devices;
unsigned int i;
@ -146,6 +147,13 @@ static GSList *hw_scan(GSList *options)
sdi->driver = cdi;
sdi->priv = ctx;
for (i = 0; probe_names[i]; i++) {
if (!(probe = sr_probe_new(i, SR_PROBE_ANALOG, TRUE,
probe_names[i])))
return NULL;
sdi->probes = g_slist_append(sdi->probes, probe);
}
devices = g_slist_append(devices, sdi);
cdi->instances = g_slist_append(cdi->instances, sdi);

View File

@ -152,7 +152,9 @@ static int hw_init(void)
static GSList *hw_scan(GSList *options)
{
struct sr_dev_inst *sdi;
struct sr_probe *probe;
GSList *devices;
int i;
(void)options;
devices = NULL;
@ -164,6 +166,13 @@ static GSList *hw_scan(GSList *options)
}
sdi->driver = ddi;
for (i = 0; probe_names[i]; i++) {
if (!(probe = sr_probe_new(i, SR_PROBE_ANALOG, TRUE,
probe_names[i])))
return NULL;
sdi->probes = g_slist_append(sdi->probes, probe);
}
devices = g_slist_append(devices, sdi);
ddi->instances = g_slist_append(ddi->instances, sdi);

View File

@ -151,7 +151,9 @@ static struct sr_dev_driver *hdi = &hantek_dso_driver_info;
static struct sr_dev_inst *dso_dev_new(int index, const struct dso_profile *prof)
{
struct sr_dev_inst *sdi;
struct sr_probe *probe;
struct context *ctx;
int i;
sdi = sr_dev_inst_new(index, SR_ST_INITIALIZING,
prof->vendor, prof->model, NULL);
@ -159,6 +161,16 @@ static struct sr_dev_inst *dso_dev_new(int index, const struct dso_profile *prof
return NULL;
sdi->driver = hdi;
/* Add only the real probes -- EXT isn't a source of data, only
* a trigger source internal to the device.
*/
for (i = 0; probe_names[i]; i++) {
if (!(probe = sr_probe_new(i, SR_PROBE_ANALOG, TRUE,
probe_names[i])))
return NULL;
sdi->probes = g_slist_append(sdi->probes, probe);
}
if (!(ctx = g_try_malloc0(sizeof(struct context)))) {
sr_err("hantek-dso: ctx malloc failed");
return NULL;

View File

@ -251,6 +251,7 @@ struct sr_dev {
enum {
SR_PROBE_LOGIC,
SR_PROBE_ANALOG,
};
struct sr_probe {