]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/serial-dmm/api.c
serial-dmm/uni-t-dmm: Add UNI-T UT804 DMM definitions
[libsigrok.git] / src / hardware / serial-dmm / api.c
index 98bf7fb20526a1f5210730552ecccf5a363f694a..6b3b2c33040e49e100d6b685fcfc5a0cdc66f5cd 100644 (file)
@@ -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(
@@ -632,6 +646,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",