]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/gwinstek-gds-800/protocol.c
Remove unnecessary dev_clear() callbacks
[libsigrok.git] / src / hardware / gwinstek-gds-800 / protocol.c
index 05328df979847dbd71c56f1a39467c97b821c36d..77058577e44d8584805f623dca855354617f1b38 100644 (file)
@@ -23,7 +23,7 @@
 #define ANALOG_CHANNELS 2
 #define VERTICAL_DIVISIONS 10
 
-static int read_data(struct sr_dev_inst *sdi, void *cb_data,
+static int read_data(struct sr_dev_inst *sdi,
                struct sr_scpi_dev_inst *scpi, struct dev_context *devc,
                int data_size)
 {
@@ -34,7 +34,7 @@ static int read_data(struct sr_dev_inst *sdi, void *cb_data,
                data_size - devc->cur_rcv_buffer_position);
        if (len < 0) {
                sr_err("Read data error.");
-               sdi->driver->dev_acquisition_stop(sdi, cb_data);
+               sdi->driver->dev_acquisition_stop(sdi);
                devc->cur_rcv_buffer_position = 0;
                return SR_ERR;
        }
@@ -54,7 +54,7 @@ static int read_data(struct sr_dev_inst *sdi, void *cb_data,
                return SR_OK;
        } else {
                sr_err("Too many bytes read.");
-               sdi->driver->dev_acquisition_stop(sdi, cb_data);
+               sdi->driver->dev_acquisition_stop(sdi);
                devc->cur_rcv_buffer_position = 0;
                return SR_ERR;
        }
@@ -66,7 +66,7 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data)
        struct sr_scpi_dev_inst *scpi;
        struct dev_context *devc;
        struct sr_datafeed_packet packet;
-       struct sr_datafeed_analog analog;
+       struct sr_datafeed_analog_old analog;
        char command[32];
        char *response;
        float volts_per_division;
@@ -92,17 +92,17 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data)
        case START_ACQUISITION:
                if (sr_scpi_send(scpi, ":TRIG:MOD 3") != SR_OK) {
                        sr_err("Failed to set trigger mode to SINGLE.");
-                       sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                       sdi->driver->dev_acquisition_stop(sdi);
                        return TRUE;
                }
                if (sr_scpi_send(scpi, ":STOP") != SR_OK) {
                        sr_err("Failed to put the trigger system into STOP state.");
-                       sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                       sdi->driver->dev_acquisition_stop(sdi);
                        return TRUE;
                }
                if (sr_scpi_send(scpi, ":RUN") != SR_OK) {
                        sr_err("Failed to put the trigger system into RUN state.");
-                       sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                       sdi->driver->dev_acquisition_stop(sdi);
                        return TRUE;
                }
 
@@ -113,12 +113,12 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data)
                if (((struct sr_channel *)g_slist_nth_data(sdi->channels, devc->cur_acq_channel))->enabled) {
                        if (sr_scpi_send(scpi, ":ACQ%d:MEM?", devc->cur_acq_channel+1) != SR_OK) {
                                sr_err("Failed to acquire memory.");
-                               sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                               sdi->driver->dev_acquisition_stop(sdi);
                                return TRUE;
                        }
                        if (sr_scpi_read_begin(scpi) != SR_OK) {
                                sr_err("Could not begin reading SCPI response.");
-                               sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                               sdi->driver->dev_acquisition_stop(sdi);
                                return TRUE;
                        }
                        devc->state = WAIT_FOR_TRANSFER_OF_BEGIN_TRANSMISSION_COMPLETE;
@@ -132,7 +132,7 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data)
                                        /* All frames accquired. */
                                        sr_spew("All frames acquired.");
                                        
-                                       sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                                       sdi->driver->dev_acquisition_stop(sdi);
                                        return TRUE;
                                } else {
                                        /* Start acquiring next frame. */
@@ -154,19 +154,19 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data)
                }
                break;
        case WAIT_FOR_TRANSFER_OF_BEGIN_TRANSMISSION_COMPLETE:
-               if (read_data(sdi, cb_data, scpi, devc, 1) == SR_OK) {
+               if (read_data(sdi, scpi, devc, 1) == SR_OK) {
                        if (devc->rcv_buffer[0] == '#')
                                devc->state = WAIT_FOR_TRANSFER_OF_DATA_SIZE_DIGIT_COMPLETE;
                }
                break;
        case WAIT_FOR_TRANSFER_OF_DATA_SIZE_DIGIT_COMPLETE:
-               if (read_data(sdi, cb_data, scpi, devc, 1) == SR_OK) {
+               if (read_data(sdi, scpi, devc, 1) == SR_OK) {
                        if (devc->rcv_buffer[0] != '4' &&
                                devc->rcv_buffer[0] != '5' &&
                                devc->rcv_buffer[0] != '6') {
                                sr_err("Data size digits is not 4, 5 or 6 but "
                                       "'%c'.", devc->rcv_buffer[0]);
-                               sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                               sdi->driver->dev_acquisition_stop(sdi);
                                return TRUE;
                        } else {
                                devc->data_size_digits = devc->rcv_buffer[0] - '0';
@@ -175,18 +175,18 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data)
                }
                break;
        case WAIT_FOR_TRANSFER_OF_DATA_SIZE_COMPLETE:
-               if (read_data(sdi, cb_data, scpi, devc, devc->data_size_digits) == SR_OK) {
+               if (read_data(sdi, scpi, devc, devc->data_size_digits) == SR_OK) {
                        devc->rcv_buffer[devc->data_size_digits] = 0;
                        if (sr_atoi(devc->rcv_buffer, &devc->data_size) != SR_OK) {
                                sr_err("Could not parse data size '%s'", devc->rcv_buffer);
-                               sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                               sdi->driver->dev_acquisition_stop(sdi);
                                return TRUE;
                        } else
                                devc->state = WAIT_FOR_TRANSFER_OF_SAMPLE_RATE_COMPLETE;
                }
                break;
        case WAIT_FOR_TRANSFER_OF_SAMPLE_RATE_COMPLETE:
-               if (read_data(sdi, cb_data, scpi, devc, sizeof(float)) == SR_OK) {
+               if (read_data(sdi, scpi, devc, sizeof(float)) == SR_OK) {
                        /*
                         * Contrary to the documentation, this field is
                         * transfered with most significant byte first!
@@ -206,21 +206,21 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data)
                }
                break;
        case WAIT_FOR_TRANSFER_OF_CHANNEL_INDICATOR_COMPLETE:
-               if (read_data(sdi, cb_data, scpi, devc, 1) == SR_OK)
+               if (read_data(sdi, scpi, devc, 1) == SR_OK)
                        devc->state = WAIT_FOR_TRANSFER_OF_RESERVED_DATA_COMPLETE;
                break;
        case WAIT_FOR_TRANSFER_OF_RESERVED_DATA_COMPLETE:
-               if (read_data(sdi, cb_data, scpi, devc, 3) == SR_OK)
+               if (read_data(sdi, scpi, devc, 3) == SR_OK)
                        devc->state = WAIT_FOR_TRANSFER_OF_CHANNEL_DATA_COMPLETE;
                break;
        case WAIT_FOR_TRANSFER_OF_CHANNEL_DATA_COMPLETE:
-               if (read_data(sdi, cb_data, scpi, devc, devc->data_size - 8) == SR_OK) {
+               if (read_data(sdi, scpi, devc, devc->data_size - 8) == SR_OK) {
                        /* Fetch data needed for conversion from device. */
                        snprintf(command, sizeof(command), ":CHAN%d:SCAL?",
                                        devc->cur_acq_channel + 1);
                        if (sr_scpi_get_string(scpi, command, &response) != SR_OK) {
                                sr_err("Failed to get volts per division.");
-                               sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                               sdi->driver->dev_acquisition_stop(sdi);
                                return TRUE;
                        }
                        volts_per_division = g_ascii_strtod(response, &end_ptr);
@@ -243,9 +243,9 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data)
                        analog.mq = SR_MQ_VOLTAGE;
                        analog.unit = SR_UNIT_VOLT;
                        analog.mqflags = 0;
-                       packet.type = SR_DF_ANALOG;
+                       packet.type = SR_DF_ANALOG_OLD;
                        packet.payload = &analog;
-                       sr_session_send(cb_data, &packet);
+                       sr_session_send(sdi, &packet);
                        g_slist_free(analog.channels);
 
                        /* All channels acquired. */
@@ -255,7 +255,7 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data)
                                if (devc->cur_acq_frame == devc->frame_limit - 1) {
                                        /* All frames acquired. */
                                        sr_spew("All frames acquired.");
-                                       sdi->driver->dev_acquisition_stop(sdi, cb_data);
+                                       sdi->driver->dev_acquisition_stop(sdi);
                                        return TRUE;
                                } else {
                                        /* Start acquiring next frame. */