]> sigrok.org Git - libsigrok.git/blobdiff - src/dmm/bm86x.c
dmm/bm86x: check more bytes in DMM packet (undocumented by vendor)
[libsigrok.git] / src / dmm / bm86x.c
index b38c3123d3d55a616c21616ddc2e72443523f1fa..ea260d8f97180869cfa6441696be549a476323da 100644 (file)
@@ -59,6 +59,22 @@ SR_PRIV gboolean sr_brymen_bm86x_packet_valid(const uint8_t *buf)
        if (buf[19] != 0x86)
                return FALSE;
 
+       /*
+        * 2021-05 update: The devices that we have seen in the field do
+        * provide four bytes which we can synchronize to. Which happens
+        * to match the bm52x and bm82x devices' protocol. This condition
+        * is not documented by the vendor, but improves reliability of
+        * the re-synchronization for slight offsets, which were seen
+        * in the field, and which would have kept failing in an earlier
+        * implementation.
+        */
+       if (buf[16] != 0x86)
+               return FALSE;
+       if (buf[17] != 0x86)
+               return FALSE;
+       if (buf[18] != 0x86)
+               return FALSE;
+
        return TRUE;
 }