]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/serial-dmm/api.c
serial: use timeout API in stream detect, obsoletes bitrate param
[libsigrok.git] / src / hardware / serial-dmm / api.c
index f23e96caf7d19fae8a19d85ad25aa32afe0947d8..f237bb2ad6e328ca5321d29e27a3d1b33d0a07f6 100644 (file)
@@ -106,8 +106,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        /* Let's get a bit of data and see if we can find a packet. */
        len = sizeof(buf);
        ret = serial_stream_detect(serial, buf, &len, dmm->packet_size,
-                                  dmm->packet_valid, 3000,
-                                  dmm->baudrate);
+                                  dmm->packet_valid, 3000);
        if (ret != SR_OK)
                goto scan_cleanup;
 
@@ -136,8 +135,22 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        dmm->channel_count = 1;
        if (dmm->packet_parse == sr_metex14_4packets_parse)
                dmm->channel_count = 4;
+       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_ms2115b_parse) {
+               dmm->channel_count = MS2115B_DISPLAY_COUNT;
+               dmm->channel_formats = ms2115b_channel_formats;
+       }
        for (ch_idx = 0; ch_idx < dmm->channel_count; ch_idx++) {
-               snprintf(ch_name, sizeof(ch_name), "P%zu", 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), fmt, ch_num);
                sr_channel_new(sdi, ch_idx, SR_CHANNEL_ANALOG, TRUE, ch_name);
        }
        devices = g_slist_append(devices, sdi);
@@ -205,7 +218,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,
@@ -251,6 +264,13 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers,
                sr_dtm0660_packet_valid, sr_dtm0660_parse, NULL
        ),
        /* }}} */
+       /* eev121gw based meters {{{ */
+       DMM(
+               "eevblog-121gw", eev121gw, "EEVblog", "121GW",
+               "115200/8n1", 115200, EEV121GW_PACKET_SIZE, 0, 0, NULL,
+               sr_eev121gw_packet_valid, sr_eev121gw_3displays_parse, NULL
+       ),
+       /* }}} */
        /* es519xx based meters {{{ */
        DMM(
                "iso-tech-idm103n", es519xx,
@@ -408,6 +428,12 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers,
                2400, 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",
+               2400, FS9922_PACKET_SIZE, 0, 0, NULL,
+               sr_fs9922_packet_valid, sr_fs9922_parse, NULL
+       ),
        DMM(
                /*
                 * Note: The VC830 doesn't set the 'volt' and 'diode' bits of
@@ -430,6 +456,15 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers,
                NULL
        ),
        /* }}} */
+       /* ms2115b based meters {{{ */
+       DMM(
+               "mastech-ms2115b", ms2115b,
+               "MASTECH", "MS2115B", "1200/8n1",
+               1200, MS2115B_PACKET_SIZE, 0, 0, NULL,
+               sr_ms2115b_packet_valid, sr_ms2115b_parse,
+               NULL
+       ),
+       /* }}} */
        /* ms8250d based meters {{{ */
        DMM(
                "mastech-ms8250d", ms8250d,
@@ -579,13 +614,6 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers,
                2400, UT71X_PACKET_SIZE, 0, 0, NULL,
                sr_ut71x_packet_valid, sr_ut71x_parse, NULL
        ),
-       DMM(
-               "voltcraft-vc96", vc96,
-               "Voltcraft", "VC96", "1200/8n2", 1200,
-               VC96_PACKET_SIZE, 0, 0, NULL,
-               sr_vc96_packet_valid, sr_vc96_parse,
-               NULL
-       ),
        DMM(
                "uni-t-ut71c-ser", ut71x,
                "UNI-T", "UT71C (UT-D02 cable)", "2400/7o1/rts=0/dtr=1",
@@ -631,6 +659,15 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers,
                sr_vc870_packet_valid, sr_vc870_parse, NULL
        ),
        /* }}} */
+       /* vc96 based meters {{{ */
+       DMM(
+               "voltcraft-vc96", vc96,
+               "Voltcraft", "VC-96", "1200/8n2", 1200,
+               VC96_PACKET_SIZE, 0, 0, NULL,
+               sr_vc96_packet_valid, sr_vc96_parse,
+               NULL
+       ),
+       /* }}} */
        /*
         * The list is sorted. Add new items in the respective chip's group.
         */