]> sigrok.org Git - libsigrok.git/commitdiff
uni-t-ut32x: don't provide a default conn= spec in the driver source
authorGerhard Sittig <redacted>
Sun, 9 Jun 2019 16:28:48 +0000 (18:28 +0200)
committerGerhard Sittig <redacted>
Thu, 13 Jun 2019 17:33:01 +0000 (19:33 +0200)
This undoes the essence of commit bf700f679af2, which introduced the
default conn= spec. Which improved usability: Users just select the
device and need not specify the connection. But also resulted in the
UT32x thermometer driver's probe to "succeed" as soon as the WCH CH9325
chip was found, no data check was involved in the scan. Unfortunately
this chip is also used in the popular UT-D04 cable, and thus there were
many false positives.

src/hardware/uni-t-ut32x/api.c

index 199fe473c069af6e86519029ff2e2b03dfddabff..21e5be7d1a8989134bff5c9ea0b7b4c1ebdabfe0 100644 (file)
@@ -65,7 +65,13 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
        struct dev_context *devc;
        size_t i;
 
-       conn = "hid/ch9325";
+       /*
+        * Implementor's note: Do _not_ add a default conn value here,
+        * always expect users to specify the connection. Otherwise the
+        * UT32x driver's scan routine results in false positives, will
+        * match _any_ UT-D04 cable which uses the same USB HID chip.
+        */
+       conn = NULL;
        serialcomm = "2400/8n1";
        for (l = options; l; l = l->next) {
                src = l->data;
@@ -78,6 +84,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
                        break;
                }
        }
+       if (!conn)
+               return NULL;
 
        devices = NULL;
        serial = sr_serial_dev_inst_new(conn, serialcomm);