]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/fx2lafw/protocol.c
rigol-ds: Add DS1074Z Plus and DS1104Z Plus.
[libsigrok.git] / src / hardware / fx2lafw / protocol.c
index 5113462931d7fe46f0e9326c187be0e2b7ab2634..70186518b6d5ade6b983a7b70f66ce8e1fd4eb9a 100644 (file)
@@ -307,6 +307,7 @@ SR_PRIV struct dev_context *fx2lafw_dev_new(void)
        devc->capture_ratio = 0;
        devc->sample_wide = FALSE;
        devc->dslogic_continuous_mode = FALSE;
+       devc->dslogic_clock_edge = DS_EDGE_RISING;
        devc->stl = NULL;
 
        return devc;
@@ -330,7 +331,7 @@ static void finish_acquisition(struct sr_dev_inst *sdi)
 
        devc = sdi->priv;
 
-       std_session_send_df_end(sdi, LOG_PREFIX);
+       std_session_send_df_end(sdi);
 
        usb_source_remove(sdi->session, devc->ctx);
 
@@ -389,6 +390,10 @@ SR_PRIV void mso_send_data_proc(struct sr_dev_inst *sdi,
 {
        size_t i;
        struct dev_context *devc;
+       struct sr_datafeed_analog analog;
+       struct sr_analog_encoding encoding;
+       struct sr_analog_meaning meaning;
+       struct sr_analog_spec spec;
 
        (void)sample_width;
 
@@ -398,9 +403,9 @@ SR_PRIV void mso_send_data_proc(struct sr_dev_inst *sdi,
 
        /* Send the logic */
        for (i = 0; i < length; i++) {
-               devc->logic_buffer[i]  = data[i * 2];
+               devc->logic_buffer[i] = data[i * 2];
                /* Rescale to -10V - +10V from 0-255. */
-               devc->analog_buffer[i] = data[i * 2 + 1] - 128.0f / 12.8f;
+               devc->analog_buffer[i] = (data[i * 2 + 1] - 128.0f) / 12.8f;
        };
 
        const struct sr_datafeed_logic logic = {
@@ -416,17 +421,16 @@ SR_PRIV void mso_send_data_proc(struct sr_dev_inst *sdi,
 
        sr_session_send(sdi, &logic_packet);
 
-       const struct sr_datafeed_analog_old analog = {
-               .channels = devc->enabled_analog_channels,
-               .num_samples = length,
-               .mq = SR_MQ_VOLTAGE,
-               .unit = SR_UNIT_VOLT,
-               .mqflags = 0 /*SR_MQFLAG_DC*/,
-               .data = devc->analog_buffer
-       };
+       sr_analog_init(&analog, &encoding, &meaning, &spec, 2);
+       analog.meaning->channels = devc->enabled_analog_channels;
+       analog.meaning->mq = SR_MQ_VOLTAGE;
+       analog.meaning->unit = SR_UNIT_VOLT;
+       analog.meaning->mqflags = 0 /* SR_MQFLAG_DC */;
+       analog.num_samples = length;
+       analog.data = devc->analog_buffer;
 
        const struct sr_datafeed_packet analog_packet = {
-               .type = SR_DF_ANALOG_OLD,
+               .type = SR_DF_ANALOG,
                .payload = &analog
        };
 
@@ -516,25 +520,25 @@ SR_PRIV void LIBUSB_CALL fx2lafw_receive_transfer(struct libusb_transfer *transf
                        else
                                num_samples = cur_sample_count;
 
-                       if(devc->dslogic && devc->trigger_pos > devc->sent_samples
-                               && devc->trigger_pos <= devc->sent_samples + num_samples){
-                                       /* dslogic trigger in this block. Send trigger position */
+                       if (devc->dslogic && devc->trigger_pos > devc->sent_samples
+                               && devc->trigger_pos <= devc->sent_samples + num_samples) {
+                                       /* DSLogic trigger in this block. Send trigger position. */
                                        trigger_offset = devc->trigger_pos - devc->sent_samples;
-                                       /* pre-trigger samples */
+                                       /* Pre-trigger samples. */
                                        devc->send_data_proc(sdi, (uint8_t *)transfer->buffer,
                                                trigger_offset * unitsize, unitsize);
                                        devc->sent_samples += trigger_offset;
-                                       /* trigger position */
+                                       /* Trigger position. */
                                        devc->trigger_pos = 0;
                                        packet.type = SR_DF_TRIGGER;
                                        packet.payload = NULL;
                                        sr_session_send(sdi, &packet);
-                                       /* post trigger samples */
+                                       /* Post trigger samples. */
                                        num_samples -= trigger_offset;
                                        devc->send_data_proc(sdi, (uint8_t *)transfer->buffer
-                                                       + trigger_offset * unitsize,    num_samples * unitsize, unitsize);
+                                                       + trigger_offset * unitsize, num_samples * unitsize, unitsize);
                                        devc->sent_samples += num_samples;
-                       }else{
+                       } else {
                                devc->send_data_proc(sdi, (uint8_t *)transfer->buffer,
                                        num_samples * unitsize, unitsize);
                                devc->sent_samples += num_samples;