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:
Gerhard Sittig 2017-06-17 17:58:45 +02:00 committed by Uwe Hermann
parent f1c79a6a35
commit d91d0b1250
1 changed files with 1 additions and 1 deletions

View File

@ -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,