X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fserial-dmm%2Fapi.c;h=bf1e695e5a0856b17fc7344b4fc1ae557a9b98cf;hb=6d2e3070162cce8c45b3147190f217c0ecde10b5;hp=e8960dc3e104211a2d19e5aacafdac8b540bb42c;hpb=10cfb0482645dbf351b54f89ead883f4a4fd3902;p=libsigrok.git diff --git a/src/hardware/serial-dmm/api.c b/src/hardware/serial-dmm/api.c index e8960dc3..bf1e695e 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,12 +131,14 @@ 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_metex14_4packets_parse) - dmm->channel_count = 4; + 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; } + if (dmm->packet_parse == sr_metex14_4packets_parse) + dmm->channel_count = 4; if (dmm->packet_parse == sr_ms2115b_parse) { dmm->channel_count = MS2115B_DISPLAY_COUNT; dmm->channel_formats = ms2115b_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( @@ -503,6 +517,13 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers, sr_metex14_packet_valid, sr_metex14_parse, NULL ), + DMM( + "metex-me21", metex14, + "Metex", "ME-21", "2400/7n2/rts=0/dtr=1", + METEX14_PACKET_SIZE, 0, 0, sr_metex14_packet_request, + sr_metex14_packet_valid, sr_metex14_parse, + NULL + ), DMM( "metex-me31", metex14, "Metex", "ME-31", "600/7n2/rts=0/dtr=1", @@ -632,6 +653,12 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers, UT71X_PACKET_SIZE, 0, 0, NULL, sr_ut71x_packet_valid, sr_ut71x_parse, NULL ), + DMM( + "uni-t-ut804-ser", ut71x, + "UNI-T", "UT804", "2400/7o1/rts=0/dtr=1", + UT71X_PACKET_SIZE, 0, 0, NULL, + sr_ut71x_packet_valid, sr_ut71x_parse, NULL + ), DMM( "voltcraft-vc920-ser", ut71x, "Voltcraft", "VC-920 (UT-D02 cable)", "2400/7o1/rts=0/dtr=1",