+ }
+ if (logic_pattern == -1 && analog_pattern == -1)
+ return SR_ERR_ARG;
+ for (l = cg->channels; l; l = l->next) {
+ ch = l->data;
+ if (ch->type == SR_CHANNEL_LOGIC) {
+ if (logic_pattern == -1)
+ return SR_ERR_ARG;
+ sr_dbg("Setting logic pattern to %s",
+ logic_pattern_str[logic_pattern]);
+ devc->logic_pattern = logic_pattern;
+ /* Might as well do this now, these are static. */
+ if (logic_pattern == PATTERN_ALL_LOW)
+ memset(devc->logic_data, 0x00, LOGIC_BUFSIZE);
+ else if (logic_pattern == PATTERN_ALL_HIGH)
+ memset(devc->logic_data, 0xff, LOGIC_BUFSIZE);
+ } else if (ch->type == SR_CHANNEL_ANALOG) {
+ if (analog_pattern == -1)
+ return SR_ERR_ARG;
+ sr_dbg("Setting analog pattern for channel %s to %s",
+ ch->name, analog_pattern_str[analog_pattern]);
+ ag = g_hash_table_lookup(devc->ch_ag, ch);
+ ag->pattern = analog_pattern;
+ } else
+ return SR_ERR_BUG;
+ }
+ break;
+ case SR_CONF_AMPLITUDE:
+ if (!cg)
+ return SR_ERR_CHANNEL_GROUP;
+ for (l = cg->channels; l; l = l->next) {
+ ch = l->data;
+ if (ch->type != SR_CHANNEL_ANALOG)