]> sigrok.org Git - libsigrok.git/commitdiff
asix-sigma: Fixed RLE decoder
authorGerhard Sittig <redacted>
Sun, 23 Apr 2017 11:29:51 +0000 (13:29 +0200)
committerUwe Hermann <redacted>
Fri, 26 May 2017 20:47:45 +0000 (22:47 +0200)
When "tsdiff < EVENTS_PER_CLUSTER" we don't want "tsdiff - EVENTS_PER_CLUSTER"
(a negative number) to be treated as (int).

Submitted-By: jry <redacted>
[ gsi: massaged for mainline submission ]

src/hardware/asix-sigma/protocol.c

index d2670b4c3a974e503330f9a1564fd2b1737772e1..94d1fed607e8f3ba317cadf85819ab2c60d31c84 100644 (file)
@@ -723,7 +723,7 @@ static void sigma_decode_dram_cluster(struct sigma_dram_cluster *dram_cluster,
 
        ts = sigma_dram_cluster_ts(dram_cluster);
        tsdiff = ts - ss->lastts;
-       ss->lastts = ts;
+       ss->lastts = ts + EVENTS_PER_CLUSTER;
 
        packet.type = SR_DF_LOGIC;
        packet.payload = &logic;
@@ -741,7 +741,7 @@ static void sigma_decode_dram_cluster(struct sigma_dram_cluster *dram_cluster,
         * sample in the cluster happens at the time of the timestamp
         * and the remaining samples happen at timestamp +1...+6 .
         */
-       for (ts = 0; ts < tsdiff - (EVENTS_PER_CLUSTER - 1); ts++) {
+       for (ts = 0; ts < tsdiff; ts++) {
                i = ts % 1024;
                samples[2 * i + 0] = ss->lastsample & 0xff;
                samples[2 * i + 1] = ss->lastsample >> 8;
@@ -751,7 +751,7 @@ static void sigma_decode_dram_cluster(struct sigma_dram_cluster *dram_cluster,
                 * end of submitting the padding samples, submit
                 * the packet to Sigrok.
                 */
-               if ((i == 1023) || (ts == (tsdiff - EVENTS_PER_CLUSTER))) {
+               if ((i == 1023) || (ts == tsdiff - 1)) {
                        logic.length = (i + 1) * logic.unitsize;
                        sr_session_send(sdi, &packet);
                }