demo: Unbreak execution with all analog channels disabled
The 'demo' driver supports scan options to adjust the number of supported channels, and runtime control for the enabled state of channels. Starting with zero analog channels created (scan option) resulted in a runtime assertion. Creating but disabling analog channels (GUI checkbox, CLI option) resulted in unexpected output for disabled channels. Move the creation of a hash table out of the conditional loop that iterates over created analog channels. Which results in the table's always being valid, and iteration during data acquisition yields no analog output as is expected. This fixes bug #625.
This commit is contained in:
parent
f1c79a6a35
commit
d91d0b1250
|
@ -135,6 +135,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
|
|||
}
|
||||
|
||||
/* Analog channels, channel groups and pattern generators. */
|
||||
devc->ch_ag = g_hash_table_new(g_direct_hash, g_direct_equal);
|
||||
if (num_analog_channels > 0) {
|
||||
pattern = 0;
|
||||
/* An "Analog" channel group with all analog channels in it. */
|
||||
|
@ -142,7 +143,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
|
|||
acg->name = g_strdup("Analog");
|
||||
sdi->channel_groups = g_slist_append(sdi->channel_groups, acg);
|
||||
|
||||
devc->ch_ag = g_hash_table_new(g_direct_hash, g_direct_equal);
|
||||
for (i = 0; i < num_analog_channels; i++) {
|
||||
snprintf(channel_name, 16, "A%d", i);
|
||||
ch = sr_channel_new(sdi, i + num_logic_channels, SR_CHANNEL_ANALOG,
|
||||
|
|
Loading…
Reference in New Issue