serial-dmm: add support for default connections (USB cables)

Some meters which are supported by the serial-dmm driver don't strictly
require the user's COM port specification. When a known (usually bundled,
or even builtin) cable type is used, we can provide a default conn= spec
and thus improve usability. Prepare the DMM_CONN() macro, accept user
overrides.
This commit is contained in:
Gerhard Sittig 2019-06-09 10:34:51 +02:00
parent 09c650d5e9
commit 0527cc3ad7
2 changed files with 12 additions and 4 deletions

View File

@ -61,7 +61,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
dmm = (struct dmm_info *)di;
conn = NULL;
conn = dmm->conn;
serialcomm = dmm->serialcomm;
for (l = options; l; l = l->next) {
src = l->data;
@ -194,8 +194,9 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
return SR_OK;
}
#define DMM(ID, CHIPSET, VENDOR, MODEL, SERIALCOMM, PACKETSIZE, TIMEOUT, \
DELAY, REQUEST, VALID, PARSE, DETAILS) \
#define DMM_CONN(ID, CHIPSET, VENDOR, MODEL, \
CONN, SERIALCOMM, PACKETSIZE, TIMEOUT, DELAY, \
REQUEST, VALID, PARSE, DETAILS) \
&((struct dmm_info) { \
{ \
.name = ID, \
@ -215,10 +216,15 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
.dev_acquisition_stop = std_serial_dev_acquisition_stop, \
.context = NULL, \
}, \
VENDOR, MODEL, SERIALCOMM, PACKETSIZE, TIMEOUT, DELAY, \
VENDOR, MODEL, CONN, SERIALCOMM, PACKETSIZE, TIMEOUT, DELAY, \
REQUEST, 1, NULL, VALID, PARSE, DETAILS, sizeof(struct CHIPSET##_info) \
}).di
#define DMM(ID, CHIPSET, VENDOR, MODEL, SERIALCOMM, PACKETSIZE, TIMEOUT, \
DELAY, REQUEST, VALID, PARSE, DETAILS) \
DMM_CONN(ID, CHIPSET, VENDOR, MODEL, NULL, SERIALCOMM, PACKETSIZE, \
TIMEOUT, DELAY, REQUEST, VALID, PARSE, DETAILS)
SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers,
/*
* The items are sorted by chipset first and then model name.

View File

@ -29,6 +29,8 @@ struct dmm_info {
const char *vendor;
/** Model. */
const char *device;
/** conn string. */
const char *conn;
/** serialcomm string. */
const char *serialcomm;
/** Packet size in bytes. */