serial-dmm: introduce support for subdriver specific channel names

Default to the existing "P1" etc naming scheme for analog channels of
serial-dmm subdrivers. Add support for subdriver specific channel names
(which can reference the channel number if they desire). This is useful
for devices with multiple displays, or special purpose devices where
other names than P1 can better reflect the channel's nature.
This commit is contained in:
Gerhard Sittig 2018-09-30 04:45:27 +02:00 committed by Uwe Hermann
parent e91c9f6e25
commit 7d40b5ee62
2 changed files with 8 additions and 2 deletions

View File

@ -138,8 +138,12 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
dmm->channel_count = 4;
for (ch_idx = 0; ch_idx < dmm->channel_count; ch_idx++) {
size_t ch_num;
const char *fmt;
fmt = "P%zu";
if (dmm->channel_formats && dmm->channel_formats[ch_idx])
fmt = dmm->channel_formats[ch_idx];
ch_num = ch_idx + 1;
snprintf(ch_name, sizeof(ch_name), "P%zu", ch_num);
snprintf(ch_name, sizeof(ch_name), fmt, ch_num);
sr_channel_new(sdi, ch_idx, SR_CHANNEL_ANALOG, TRUE, ch_name);
}
devices = g_slist_append(devices, sdi);
@ -207,7 +211,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
.context = NULL, \
}, \
VENDOR, MODEL, CONN, BAUDRATE, PACKETSIZE, TIMEOUT, DELAY, \
REQUEST, 1, VALID, PARSE, DETAILS, sizeof(struct CHIPSET##_info) \
REQUEST, 1, NULL, VALID, PARSE, DETAILS, sizeof(struct CHIPSET##_info) \
}).di
SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers,

View File

@ -49,6 +49,8 @@ struct dmm_info {
int (*packet_request)(struct sr_serial_dev_inst *);
/** Number of channels / displays. */
size_t channel_count;
/** (Optional) printf formats for channel names. */
const char **channel_formats;
/** Packet validation function. */
gboolean (*packet_valid)(const uint8_t *);
/** Packet parsing function. */