X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fserial-dmm%2Fapi.c;h=da81bc907f5c94c24646ce5a792937de005875c5;hb=8491cf7cad0e12cd74e0161dd263b4f4155db3ce;hp=98bf7fb20526a1f5210730552ecccf5a363f694a;hpb=db3aac1a295a778657935e100438bc0552ffeaaa;p=libsigrok.git diff --git a/src/hardware/serial-dmm/api.c b/src/hardware/serial-dmm/api.c index 98bf7fb2..da81bc90 100644 --- a/src/hardware/serial-dmm/api.c +++ b/src/hardware/serial-dmm/api.c @@ -61,7 +61,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) dmm = (struct dmm_info *)di; - conn = serialcomm = NULL; + conn = dmm->conn; + serialcomm = dmm->serialcomm; for (l = options; l; l = l->next) { src = l->data; switch (src->key) { @@ -76,9 +77,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) if (!conn) return NULL; - if (!serialcomm) - serialcomm = dmm->conn; - serial = sr_serial_dev_inst_new(conn, serialcomm); if (serial_open(serial, SERIAL_RDWR) != SR_OK) @@ -133,6 +131,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) sdi->conn = serial; sdi->priv = devc; dmm->channel_count = 1; + if (dmm->packet_parse == sr_brymen_bm86x_parse) + dmm->channel_count = BRYMEN_BM86X_DISPLAY_COUNT; if (dmm->packet_parse == sr_eev121gw_3displays_parse) { dmm->channel_count = EEV121GW_DISPLAY_COUNT; dmm->channel_formats = eev121gw_channel_formats; @@ -196,8 +196,9 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) return SR_OK; } -#define DMM(ID, CHIPSET, VENDOR, MODEL, CONN, 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, \ @@ -217,10 +218,15 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) .dev_acquisition_stop = std_serial_dev_acquisition_stop, \ .context = NULL, \ }, \ - VENDOR, MODEL, CONN, 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. @@ -250,6 +256,15 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers, NULL ), /* }}} */ + /* bm86x based meters {{{ */ + DMM_CONN( + "brymen-bm86x", brymen_bm86x, "Brymen", "BM86x", + "hid/bu86x", NULL, BRYMEN_BM86X_PACKET_SIZE, 500, 100, + sr_brymen_bm86x_packet_request, + sr_brymen_bm86x_packet_valid, sr_brymen_bm86x_parse, + NULL + ), + /* }}} */ /* dtm0660 based meters {{{ */ DMM( "peaktech-3415", dtm0660, @@ -428,10 +443,9 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers, FS9922_PACKET_SIZE, 0, 0, NULL, sr_fs9922_packet_valid, sr_fs9922_parse, NULL ), - DMM( - "victor-dmm-ser", fs9922, - "Victor", "Victor DMMs (Mini-USB cable)", "2400/8n1", - FS9922_PACKET_SIZE, 0, 0, NULL, + DMM_CONN( + "victor-dmm", fs9922, "Victor", "Victor DMMs", + "hid/victor", "2400/8n1", FS9922_PACKET_SIZE, 0, 0, NULL, sr_fs9922_packet_valid, sr_fs9922_parse, NULL ), DMM(