]> sigrok.org Git - libsigrok.git/blobdiff - hardware/openbench-logic-sniffer/protocol.c
Add Rigol DS1052E/1102E VID:PID
[libsigrok.git] / hardware / openbench-logic-sniffer / protocol.c
index ff2af5850c0191560204f68a61f7969349969c23..0a9047a3fa6140b75392f73273aab21568dc29ab 100644 (file)
@@ -284,16 +284,12 @@ SR_PRIV struct sr_dev_inst *get_metadata(struct sr_serial_dev_inst *serial)
 }
 
 SR_PRIV int ols_set_samplerate(const struct sr_dev_inst *sdi,
-                              uint64_t samplerate,
-                              const struct sr_samplerates *samplerates)
+               const uint64_t samplerate)
 {
        struct dev_context *devc;
 
        devc = sdi->priv;
-       if (devc->max_samplerate) {
-               if (samplerate > devc->max_samplerate)
-                       return SR_ERR_SAMPLERATE;
-       } else if (samplerate < samplerates->low || samplerate > samplerates->high)
+       if (devc->max_samplerate && samplerate > devc->max_samplerate)
                return SR_ERR_SAMPLERATE;
 
        if (samplerate > CLOCK_RATE) {
@@ -311,7 +307,7 @@ SR_PRIV int ols_set_samplerate(const struct sr_dev_inst *sdi,
        if (devc->flag_reg & FLAG_DEMUX)
                devc->cur_samplerate *= 2;
        if (devc->cur_samplerate != samplerate)
-               sr_err("Can't match samplerate %" PRIu64 ", using %"
+               sr_info("Can't match samplerate %" PRIu64 ", using %"
                       PRIu64 ".", samplerate, devc->cur_samplerate);
 
        return SR_OK;
@@ -338,6 +334,7 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
        struct drv_context *drvc;
        struct dev_context *devc;
        GSList *l;
+       uint32_t sample;
        int num_channels, offset, i, j;
        unsigned char byte;
 
@@ -392,8 +389,9 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
                sr_dbg("Received byte 0x%.2x.", byte);
                if (devc->num_bytes == num_channels) {
                        /* Got a full sample. */
-                       sr_dbg("Received sample 0x%.*x.",
-                              devc->num_bytes * 2, *(int *)devc->sample);
+                       sample = devc->sample[0] | (devc->sample[1] << 8) \
+                                       | (devc->sample[2] << 16) | (devc->sample[3] << 24);
+                       sr_dbg("Received sample 0x%.*x.", devc->num_bytes * 2, sample);
                        if (devc->flag_reg & FLAG_RLE) {
                                /*
                                 * In RLE mode -1 should never come in as a
@@ -405,7 +403,7 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
                                         * FIXME: This will only work on
                                         * little-endian systems.
                                         */
-                                       devc->rle_count = *(int *)(devc->sample);
+                                       devc->rle_count = sample;
                                        sr_dbg("RLE count: %d.", devc->rle_count);
                                        devc->num_bytes = 0;
                                        return TRUE;
@@ -441,7 +439,7 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
                                        }
                                }
                                memcpy(devc->sample, devc->tmp_sample, 4);
-                               sr_dbg("Full sample: 0x%.8x.", *(int *)devc->sample);
+                               sr_dbg("Full sample: 0x%.8x.", sample);
                        }
 
                        /* the OLS sends its sample buffer backwards.