- if ((changes & SR_CHANNEL_SET_TRIGGER) != 0) {
- trigger_mask = devc->trigger_mask & ~channel_bit;
- trigger_values = devc->trigger_values & ~channel_bit;
- trigger_edge_mask = devc->trigger_edge_mask & ~channel_bit;
-
- if (ch->trigger && ch->trigger[0] != '\0') {
- if (ch->trigger[1] != '\0') {
- sr_warn("Trigger configuration \"%s\" with "
- "multiple stages is not supported.",
- ch->trigger);
- return SR_ERR_ARG;
- }
- /* Enable trigger for this channel. */
- trigger_mask |= channel_bit;
-
- /* Configure edge mask and trigger value. */
- switch (ch->trigger[0]) {
- case '1': trigger_values |= channel_bit;
- case '0': break;
-
- case 'r': trigger_values |= channel_bit;
- case 'f': trigger_edge_mask |= channel_bit;
- break;
- default:
- sr_warn("Trigger type '%c' is not supported.",
- ch->trigger[0]);
- return SR_ERR_ARG;
- }
- }
- /* Store validated trigger setup. */
- devc->trigger_mask = trigger_mask;
- devc->trigger_values = trigger_values;
- devc->trigger_edge_mask = trigger_edge_mask;
- }
-