-static int configure_probes(const struct sr_dev_inst *sdi)
-{
- struct dev_context *devc;
- const struct sr_probe *probe;
- const GSList *node;
- uint64_t probe_bit;
-
- devc = sdi->priv;
-
- devc->channel_mask = 0;
- devc->trigger_mask = 0;
- devc->trigger_edge_mask = 0;
- devc->trigger_values = 0;
-
- for (node = sdi->probes; node != NULL; node = node->next) {
- probe = node->data;
- if (!probe || !probe->enabled)
- continue;
-
- if (probe->index >= NUM_PROBES) {
- sr_err("Channel index %d out of range.", probe->index);
- return SR_ERR_BUG;
- }
- probe_bit = (uint64_t)1 << probe->index;
-
- /* Enable input channel for this probe. */
- devc->channel_mask |= probe_bit;
-
- if (!probe->trigger || probe->trigger[0] == '\0')
- continue;
-
- if (probe->trigger[1] != '\0') {
- sr_err("Only one trigger stage is supported.");
- return SR_ERR;
- }
- /* Enable trigger for this probe. */
- devc->trigger_mask |= probe_bit;
-
- /* Configure edge mask and trigger value. */
- switch (probe->trigger[0]) {
- case '1': devc->trigger_values |= probe_bit;
- case '0': break;
-
- case 'r': devc->trigger_values |= probe_bit;
- case 'f': devc->trigger_edge_mask |= probe_bit;
- break;
- default:
- sr_err("Trigger type '%c' is not supported.",
- probe->trigger[0]);
- return SR_ERR;
- }
- }
- return SR_OK;
-}
-