Hi, Am 2015-09-21 um 15:32 schrieb Uwe Hermann: > Hi, > > On Sun, Sep 20, 2015 at 07:25:13PM +0200, Martin Lederhilger wrote: >> this driver is for the above mentioned oscilloscope series. The patches >> in the attachment should apply to master. > > Great work, thanks a lot! > > See below for a quick review with mostly minor cosmetics. Apart from > that it looks pretty good and certainly mergeable in the next iteration. >
You can find the patch which resolves the cosmetic issues in the attachment. > >> oscilloscope. It seems to contain an serial to USB converter, but I was >> unable to establish a connection. > > Are you sure both USB and RS232 have the same protocol and features > behind them? The vendor webpage has two different software package names > (FreeCapture and FreeView), maybe the USB port is meant for something > different, or has another protocol or such? > FreeView was used to get a screen shot from the scope's display via the USB port. Since the USB port presented itself as an serial to USB converter I simply tried it, because I thought it would probably allow faster transfer rates. But unfortunately it seems to be not possible. > >> Please integrate the driver into Sigrok. Let me know if you need a >> photograph from the scope - for example for the web page - I do not want >> to post it to the mailing list, because the image is rather big. > > Sure, one or more (self-made) photos would be great for the wiki. Please > join us on IRC (#sigrok on FreeNode) for a wiki account if you like to > upload the photo and add a wiki page for the device. If that's too much > hassle you can also send me a photo via email and I'll upload it for you. > Let me know if "Public domain" or "CC-BY-SA 3.0" is fine for you as > license for the photo(s). I will send you a photo that I have taken yesterday. Greetings, Martin
>From 2559a843d402b484e074848271d3ca37ed31b44e Mon Sep 17 00:00:00 2001 From: Martin Lederhilger <martin.lederhil...@gmx.at> Date: Mon, 21 Sep 2015 19:29:27 +0200 Subject: [PATCH] gwinstek-gds-800: Cosmetic changes for being accepted upstream. --- configure.ac | 2 +- src/hardware/gwinstek-gds-800/api.c | 48 ++-- src/hardware/gwinstek-gds-800/protocol.c | 368 +++++++++++++++---------------- src/hardware/gwinstek-gds-800/protocol.h | 8 +- 4 files changed, 208 insertions(+), 218 deletions(-) diff --git a/configure.ac b/configure.ac index 3eb0486..ba98f3e 100644 --- a/configure.ac +++ b/configure.ac @@ -229,7 +229,7 @@ SR_DRIVER([demo], [demo]) SR_DRIVER([Fluke DMM], [fluke-dmm], [libserialport]) SR_DRIVER([fx2lafw], [fx2lafw], [libusb]) SR_DRIVER([GMC MH 1x/2x], [gmc-mh-1x-2x], [libserialport]) -SR_DRIVER([gwinstek gds-800], [gwinstek-gds-800], [libserialport]) +SR_DRIVER([GW Instek GDS-800], [gwinstek-gds-800], [libserialport]) SR_DRIVER([Hameg HMO], [hameg-hmo], [libserialport]) SR_DRIVER([Hantek DSO], [hantek-dso], [libusb]) SR_DRIVER([Hung-Chang DSO-2100], [hung-chang-dso-2100], [libieee1284]) diff --git a/src/hardware/gwinstek-gds-800/api.c b/src/hardware/gwinstek-gds-800/api.c index 1d86705..b3e62c1 100644 --- a/src/hardware/gwinstek-gds-800/api.c +++ b/src/hardware/gwinstek-gds-800/api.c @@ -49,13 +49,13 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi) sr_info("Couldn't get IDN response."); return NULL; } - - if(strcmp(hw_info->manufacturer, "GW") != 0 || - strncmp(hw_info->model, "GDS-8", 5) != 0) { + + if (strcmp(hw_info->manufacturer, "GW") != 0 || + strncmp(hw_info->model, "GDS-8", 5) != 0) { sr_scpi_hw_info_free(hw_info); return NULL; } - + sdi = g_malloc0(sizeof(struct sr_dev_inst)); sdi->status = SR_ST_ACTIVE; sdi->vendor = g_strdup(hw_info->manufacturer); @@ -67,25 +67,25 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi) sdi->serial_num = g_strdup(hw_info->serial_number); sdi->channels = NULL; sdi->channel_groups = NULL; - + sr_scpi_hw_info_free(hw_info); - + devc = g_malloc0(sizeof(struct dev_context)); devc->frame_limit = 1; devc->sample_rate = 0.; devc->df_started = FALSE; sdi->priv = devc; - + sr_channel_new(sdi, 0, SR_CHANNEL_ANALOG, TRUE, "CH1"); sr_channel_new(sdi, 1, SR_CHANNEL_ANALOG, TRUE, "CH2"); - + cg = g_malloc0(sizeof(struct sr_channel_group)); cg->name = g_strdup(""); cg->channels = g_slist_append(cg->channels, g_slist_nth_data(sdi->channels, 0)); cg->channels = g_slist_append(cg->channels, g_slist_nth_data(sdi->channels, 1)); cg->priv = NULL; sdi->channel_groups = g_slist_append(NULL, cg); - + return sdi; } @@ -122,7 +122,7 @@ static int dev_open(struct sr_dev_inst *sdi) static int dev_close(struct sr_dev_inst *sdi) { struct sr_scpi_dev_inst *scpi; - + if (sdi->status != SR_ST_ACTIVE) return SR_ERR_DEV_CLOSED; @@ -148,10 +148,9 @@ static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *s { int ret; struct dev_context *devc; - - (void)data; + (void)cg; - + if (!sdi || !(devc = sdi->priv)) return SR_ERR_ARG; @@ -172,10 +171,9 @@ static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sd { int ret; struct dev_context *devc; - - (void)data; + (void)cg; - + if (!sdi || !(devc = sdi->priv)) return SR_ERR_ARG; @@ -198,10 +196,10 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * const struct sr_channel_group *cg) { int ret; - + (void)sdi; (void)cg; - + ret = SR_OK; switch (key) { case SR_CONF_SCAN_OPTIONS: @@ -226,20 +224,20 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi, struct dev_context *devc; (void)cb_data; - + scpi = sdi->conn; devc = sdi->priv; - + if (sdi->status != SR_ST_ACTIVE) return SR_ERR_DEV_CLOSED; - + /* Initialize device context; */ - devc->state = START_AQUISITION; + devc->state = START_ACQUISITION; devc->cur_acq_frame = 0; sr_scpi_source_add(sdi->session, scpi, G_IO_IN, 50, gwinstek_gds_800_receive_data, (void *)sdi); - + return SR_OK; } @@ -248,7 +246,7 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) struct sr_scpi_dev_inst *scpi; struct dev_context *devc; struct sr_datafeed_packet packet; - + (void)cb_data; scpi = sdi->conn; @@ -276,7 +274,7 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) SR_PRIV struct sr_dev_driver gwinstek_gds_800_driver_info = { .name = "gwinstek-gds-800", - .longname = "gwinstek gds-800", + .longname = "GW Instek GDS-800 series", .api_version = 1, .init = init, .cleanup = cleanup, diff --git a/src/hardware/gwinstek-gds-800/protocol.c b/src/hardware/gwinstek-gds-800/protocol.c index 0285703..7824c3d 100644 --- a/src/hardware/gwinstek-gds-800/protocol.c +++ b/src/hardware/gwinstek-gds-800/protocol.c @@ -20,30 +20,33 @@ #include "protocol.h" #include <string.h> +#define ANALOG_CHANNELS 2 +#define VERTICAL_DIVISIONS 10 + static int read_data(struct sr_dev_inst *sdi, void *cb_data, struct sr_scpi_dev_inst *scpi, struct dev_context *devc, int data_size) { int len; len = sr_scpi_read_data(scpi, &devc->rcv_buffer[devc->cur_rcv_buffer_position], data_size - devc->cur_rcv_buffer_position); - if(len < 0) { + if (len < 0) { sr_err("Read data error."); sdi->driver->dev_acquisition_stop(sdi, cb_data); devc->cur_rcv_buffer_position = 0; return SR_ERR; } - + devc->cur_rcv_buffer_position += len; - + /* handle the case where sr_scpi_read_data has stopped at the newline */ - if(len < data_size && sr_scpi_read_complete(scpi)) { + if (len < data_size && sr_scpi_read_complete(scpi)) { devc->rcv_buffer[devc->cur_rcv_buffer_position] = '\n'; devc->cur_rcv_buffer_position++; } - - if(devc->cur_rcv_buffer_position < data_size) - return SR_ERR; //not finished yet - else if(devc->cur_rcv_buffer_position == data_size) { - devc->cur_rcv_buffer_position = 0; + + if (devc->cur_rcv_buffer_position < data_size) + return SR_ERR; /* not finished yet */ + else if (devc->cur_rcv_buffer_position == data_size) { + devc->cur_rcv_buffer_position = 0; return SR_OK; } else { @@ -68,9 +71,9 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data) float samples[MAX_SAMPLES]; uint32_t sample_rate; char *end_ptr; - + (void)fd; - + if (!(sdi = cb_data)) return TRUE; @@ -81,207 +84,198 @@ SR_PRIV int gwinstek_gds_800_receive_data(int fd, int revents, void *cb_data) if (!(revents == G_IO_IN || revents == 0)) return TRUE; - - switch(devc->state) - { - case START_AQUISITION: - 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); - return TRUE; - } - if (sr_scpi_send(scpi, ":STOP") != SR_OK) { - sr_err("Failed to put the trigger system into STOP state."); + + switch(devc->state) { + 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); + 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); + 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); + return TRUE; + } + + devc->cur_acq_channel = 0; + devc->state = START_TRANSFER_OF_CHANNEL_DATA; + break; + case START_TRANSFER_OF_CHANNEL_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); return TRUE; } - if (sr_scpi_send(scpi, ":RUN") != SR_OK) { - sr_err("Failed to put the trigger system into RUN state."); + if (sr_scpi_read_begin(scpi) != SR_OK) { + sr_err("Could not begin reading SCPI response."); sdi->driver->dev_acquisition_stop(sdi, cb_data); return TRUE; } - - devc->cur_acq_channel = 0; - devc->state = START_TRANSFER_OF_CHANNEL_DATA; - break; - case START_TRANSFER_OF_CHANNEL_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); - return TRUE; - } - if(sr_scpi_read_begin(scpi) != SR_OK) { - sr_err("Could not begin reading SCPI response."); + devc->state = WAIT_FOR_TRANSFER_OF_BEGIN_TRANSMISSION_COMPLETE; + devc->cur_rcv_buffer_position = 0; + } else { + /* All channels acquired. */ + if (devc->cur_acq_channel == ANALOG_CHANNELS - 1) { + sr_spew("All channels acquired."); + + /* All frames accquired. */ + if (devc->cur_acq_frame == devc->frame_limit - 1) { + sr_spew("All frames acquired."); + sdi->driver->dev_acquisition_stop(sdi, cb_data); return TRUE; } - devc->state = WAIT_FOR_TRANSFER_OF_BEGIN_TRANSMISSION_COMPLETE; - devc->cur_rcv_buffer_position = 0; - } else { - /* All channels acquired. */ - if(devc->cur_acq_channel == ANALOG_CHANNELS - 1) { - sr_spew("All channels acquired."); - - /* All frames accquired. */ - if(devc->cur_acq_frame == devc->frame_limit - 1) { - sr_spew("All frames acquired."); + /* Start acquiring next frame. */ + else { + if (devc->df_started) { + packet.type = SR_DF_FRAME_END; + sr_session_send(sdi, &packet); - sdi->driver->dev_acquisition_stop(sdi, cb_data); - return TRUE; - } - /* Start acquiring next frame. */ - else { - if(devc->df_started) { - packet.type = SR_DF_FRAME_END; - sr_session_send(sdi, &packet); - - packet.type = SR_DF_FRAME_BEGIN; - sr_session_send(sdi, &packet); - } - - devc->cur_acq_frame++; - devc->state = START_AQUISITION; + packet.type = SR_DF_FRAME_BEGIN; + sr_session_send(sdi, &packet); } + + devc->cur_acq_frame++; + devc->state = START_ACQUISITION; } - /* Start acquiring next channel. */ - else - devc->cur_acq_channel++; } - break; - case WAIT_FOR_TRANSFER_OF_BEGIN_TRANSMISSION_COMPLETE: - if(read_data(sdi, cb_data, scpi, devc, 1) == SR_OK) - { - if(devc->rcv_buffer[0] == '#') - devc->state = WAIT_FOR_TRANSFER_OF_DATA_SIZE_DIGIT_COMPLETE; + /* Start acquiring next channel. */ + else + devc->cur_acq_channel++; + } + break; + case WAIT_FOR_TRANSFER_OF_BEGIN_TRANSMISSION_COMPLETE: + if (read_data(sdi, cb_data, 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 (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); + return TRUE; } - break; - case WAIT_FOR_TRANSFER_OF_DATA_SIZE_DIGIT_COMPLETE: - if(read_data(sdi, cb_data, 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); - return TRUE; - } - else - { - devc->data_size_digits = devc->rcv_buffer[0] - '0'; - devc->state = WAIT_FOR_TRANSFER_OF_DATA_SIZE_COMPLETE; - } + else { + devc->data_size_digits = devc->rcv_buffer[0] - '0'; + devc->state = WAIT_FOR_TRANSFER_OF_DATA_SIZE_COMPLETE; } - break; - case WAIT_FOR_TRANSFER_OF_DATA_SIZE_COMPLETE: - if(read_data(sdi, cb_data, 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); - return TRUE; - } - else - devc->state = WAIT_FOR_TRANSFER_OF_SAMPLE_RATE_COMPLETE; + } + break; + case WAIT_FOR_TRANSFER_OF_DATA_SIZE_COMPLETE: + if (read_data(sdi, cb_data, 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); + return TRUE; } - break; - case WAIT_FOR_TRANSFER_OF_SAMPLE_RATE_COMPLETE: - if(read_data(sdi, cb_data, scpi, devc, sizeof(float)) == SR_OK) - { - //contrary to the documentation, this field is transfered with most - //significant byte first! - sample_rate = RB32(devc->rcv_buffer); - memcpy(&devc->sample_rate, &sample_rate, sizeof(float)); - devc->state = WAIT_FOR_TRANSFER_OF_CHANNEL_INDICATOR_COMPLETE; - - if(!devc->df_started) { - std_session_send_df_header(sdi, LOG_PREFIX); + 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) { + /* Contrary to the documentation, this field is transfered with most + significant byte first! */ + sample_rate = RB32(devc->rcv_buffer); + memcpy(&devc->sample_rate, &sample_rate, sizeof(float)); + devc->state = WAIT_FOR_TRANSFER_OF_CHANNEL_INDICATOR_COMPLETE; + + if (!devc->df_started) { + std_session_send_df_header(sdi, LOG_PREFIX); - packet.type = SR_DF_FRAME_BEGIN; - sr_session_send(sdi, &packet); - - devc->df_started = TRUE; - } + packet.type = SR_DF_FRAME_BEGIN; + sr_session_send(sdi, &packet); + + devc->df_started = TRUE; + } + } + break; + case WAIT_FOR_TRANSFER_OF_CHANNEL_INDICATOR_COMPLETE: + if (read_data(sdi, cb_data, 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) + 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) { + /* 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); + return TRUE; } - break; - case WAIT_FOR_TRANSFER_OF_CHANNEL_INDICATOR_COMPLETE: - if(read_data(sdi, cb_data, 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) - 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) - { - /* 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."); + volts_per_division = g_ascii_strtod(response, &end_ptr); + if (strcmp(end_ptr, "mV") == 0) + volts_per_division *= 1.e-3; + g_free(response); + + num_samples = (devc->data_size - 8) / 2; + sr_spew("Received %d number of samples from channel %d.", num_samples, devc->cur_acq_channel+1); + + /* Convert data */ + for (i = 0; i < num_samples; i++) + samples[i] = ((float) ((int16_t) (RB16(&devc->rcv_buffer[i*2])))) / 256. * VERTICAL_DIVISIONS * volts_per_division; + + /* Fill frame */ + analog.channels = g_slist_append(NULL, g_slist_nth_data(sdi->channels, devc->cur_acq_channel)); + analog.num_samples = num_samples; + analog.data = samples; + analog.mq = SR_MQ_VOLTAGE; + analog.unit = SR_UNIT_VOLT; + analog.mqflags = 0; + packet.type = SR_DF_ANALOG; + packet.payload = &analog; + sr_session_send(cb_data, &packet); + g_slist_free(analog.channels); + + /* All channels acquired. */ + if (devc->cur_acq_channel == ANALOG_CHANNELS - 1) { + sr_spew("All channels acquired."); + + /* All frames accquired. */ + if (devc->cur_acq_frame == devc->frame_limit - 1) { + sr_spew("All frames acquired."); + sdi->driver->dev_acquisition_stop(sdi, cb_data); return TRUE; } - volts_per_division = g_ascii_strtod(response, &end_ptr); - if(strcmp(end_ptr, "mV") == 0) - volts_per_division *= 1.e-3; - g_free(response); - - num_samples = (devc->data_size - 8) / 2; - sr_spew("Received %d number of samples from channel %d.", num_samples, devc->cur_acq_channel+1); - - /* Convert data */ - for(i = 0; i < num_samples; i++) - samples[i] = ((float) ((int16_t) (RB16(&devc->rcv_buffer[i*2])))) / 256. * VERTICAL_DIVISIONS * volts_per_division; - - /* Fill frame */ - analog.channels = g_slist_append(NULL, g_slist_nth_data(sdi->channels, devc->cur_acq_channel)); - analog.num_samples = num_samples; - analog.data = samples; - analog.mq = SR_MQ_VOLTAGE; - analog.unit = SR_UNIT_VOLT; - analog.mqflags = 0; - packet.type = SR_DF_ANALOG; - packet.payload = &analog; - sr_session_send(cb_data, &packet); - g_slist_free(analog.channels); - - /* All channels acquired. */ - if(devc->cur_acq_channel == ANALOG_CHANNELS - 1) { - sr_spew("All channels acquired."); - - /* All frames accquired. */ - if(devc->cur_acq_frame == devc->frame_limit - 1) { - sr_spew("All frames acquired."); + /* Start acquiring next frame. */ + else { + if (devc->df_started) { + packet.type = SR_DF_FRAME_END; + sr_session_send(sdi, &packet); - sdi->driver->dev_acquisition_stop(sdi, cb_data); - return TRUE; - } - /* Start acquiring next frame. */ - else { - if(devc->df_started) { - packet.type = SR_DF_FRAME_END; - sr_session_send(sdi, &packet); - - packet.type = SR_DF_FRAME_BEGIN; - sr_session_send(sdi, &packet); - } - - devc->cur_acq_frame++; - devc->state = START_AQUISITION; + packet.type = SR_DF_FRAME_BEGIN; + sr_session_send(sdi, &packet); } + + devc->cur_acq_frame++; + devc->state = START_ACQUISITION; } - /* Start acquiring next channel. */ - else { - devc->state = START_TRANSFER_OF_CHANNEL_DATA; - devc->cur_acq_channel++; - return TRUE; - } } - break; + /* Start acquiring next channel. */ + else { + devc->state = START_TRANSFER_OF_CHANNEL_DATA; + devc->cur_acq_channel++; + return TRUE; + } + } + break; } return TRUE; diff --git a/src/hardware/gwinstek-gds-800/protocol.h b/src/hardware/gwinstek-gds-800/protocol.h index e312dac..b846ac3 100644 --- a/src/hardware/gwinstek-gds-800/protocol.h +++ b/src/hardware/gwinstek-gds-800/protocol.h @@ -28,14 +28,12 @@ #define LOG_PREFIX "gwinstek-gds-800" -#define ANALOG_CHANNELS 2 -#define VERTICAL_DIVISIONS 10 #define MAX_SAMPLES 125000 #define MAX_RCV_BUFFER_SIZE (MAX_SAMPLES*2) enum gds_state { - START_AQUISITION, + START_ACQUISITION, START_TRANSFER_OF_CHANNEL_DATA, WAIT_FOR_TRANSFER_OF_BEGIN_TRANSMISSION_COMPLETE, WAIT_FOR_TRANSFER_OF_DATA_SIZE_DIGIT_COMPLETE, @@ -49,8 +47,8 @@ enum gds_state /** Private, per-device-instance driver context. */ struct dev_context { enum gds_state state; - guint64 cur_acq_frame; - guint64 frame_limit; + uint64_t cur_acq_frame; + uint64_t frame_limit; int cur_acq_channel; int cur_rcv_buffer_position; char rcv_buffer[MAX_RCV_BUFFER_SIZE]; -- 2.3.6
------------------------------------------------------------------------------
_______________________________________________ sigrok-devel mailing list sigrok-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sigrok-devel