From: Gerhard Sittig Date: Sun, 9 Apr 2023 08:02:49 +0000 (+0200) Subject: microchip-pickit2: support user assigned channel names at probe time X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=44f0adb65cfec90c0cbc6292ada335a5b80d533d;p=libsigrok.git microchip-pickit2: support user assigned channel names at probe time Allow users to assign channel names at probe time already. Add support for the SR_CONF_PROBE_NAMES scan option. Improves usability. $ sigrok-cli -d microchip-pickit2:probe_names=spi --samples 1024 --- diff --git a/src/hardware/microchip-pickit2/api.c b/src/hardware/microchip-pickit2/api.c index f4d5cb7a..97d5b13c 100644 --- a/src/hardware/microchip-pickit2/api.c +++ b/src/hardware/microchip-pickit2/api.c @@ -72,6 +72,7 @@ static const char *channel_names[] = { static const uint32_t scanopts[] = { SR_CONF_CONN, + SR_CONF_PROBE_NAMES, }; static const uint32_t drvopts[] = { @@ -119,6 +120,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) { struct drv_context *drvc; const char *conn; + const char *probe_names; GSList *l, *devices, *usb_devices; struct sr_config *cfg; struct sr_usb_dev_inst *usb; @@ -131,12 +133,16 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) drvc = di->context; conn = PICKIT2_DEFAULT_ADDRESS; + probe_names = NULL; for (l = options; l; l = l->next) { cfg = l->data; switch (cfg->key) { case SR_CONF_CONN: conn = g_variant_get_string(cfg->data, NULL); break; + case SR_CONF_PROBE_NAMES: + probe_names = g_variant_get_string(cfg->data, NULL); + break; } } @@ -171,13 +177,15 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) devc->num_captureratios = ARRAY_SIZE(captureratios); devc->curr_captureratio_idx = 0; devc->sw_limits.limit_samples = PICKIT2_SAMPLE_COUNT; + devc->channel_names = sr_parse_probe_names(probe_names, + channel_names, ARRAY_SIZE(channel_names), + ARRAY_SIZE(channel_names), &ch_count); /* Create the logic channels group. */ cg = sr_channel_group_new(sdi, "Logic", NULL); - ch_count = ARRAY_SIZE(channel_names); for (ch_idx = 0; ch_idx < ch_count; ch_idx++) { ch = sr_channel_new(sdi, ch_idx, SR_CHANNEL_LOGIC, - TRUE, channel_names[ch_idx]); + TRUE, devc->channel_names[ch_idx]); cg->channels = g_slist_append(cg->channels, ch); } } diff --git a/src/hardware/microchip-pickit2/protocol.h b/src/hardware/microchip-pickit2/protocol.h index 50096473..28b152f0 100644 --- a/src/hardware/microchip-pickit2/protocol.h +++ b/src/hardware/microchip-pickit2/protocol.h @@ -40,6 +40,7 @@ enum pickit_state { }; struct dev_context { + char **channel_names; enum pickit_state state; const uint64_t *samplerates; size_t num_samplerates;