X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fsiglent-sds%2Fprotocol.h;h=89abaf640b9331c347897190c947f0936f3d82b6;hb=0c678b26dd8644b57dc8b2b6666eb7f362975841;hp=0a7e5f3a0fb869433f91806b0280623428b9e11f;hpb=3e7fb88f21d9b6d87652af2d988c83d8481592de;p=libsigrok.git diff --git a/src/hardware/siglent-sds/protocol.h b/src/hardware/siglent-sds/protocol.h index 0a7e5f3a..89abaf64 100644 --- a/src/hardware/siglent-sds/protocol.h +++ b/src/hardware/siglent-sds/protocol.h @@ -20,7 +20,6 @@ #ifndef LIBSIGROK_HARDWARE_SIGLENT_SDS_PROTOCOL_H #define LIBSIGROK_HARDWARE_SIGLENT_SDS_PROTOCOL_H -#include #include #include #include @@ -32,19 +31,24 @@ //#define ACQ_BUFFER_SIZE (6000000) #define ACQ_BUFFER_SIZE (18000000) +#define SIGLENT_HEADER_SIZE 363 +#define SIGLENT_DIG_HEADER_SIZE 346 + /* Maximum number of samples to retrieve at once. */ #define ACQ_BLOCK_SIZE (30 * 1000) #define MAX_ANALOG_CHANNELS 4 #define MAX_DIGITAL_CHANNELS 16 -#define DEVICE_STATE_STOPPED 0 /* Scope is in stopped state */ -#define DEVICE_STATE_DATA_ACQ 1 /* A new signal has been acquired */ -#define DEVICE_STATE_TRIG_RDY 8192 /* Trigger is ready */ +#define DEVICE_STATE_STOPPED 0 /* Scope is in stopped state bit */ +#define DEVICE_STATE_DATA_ACQ 1 /* A new signal has been acquired bit */ +#define DEVICE_STATE_TRIG_RDY 8192 /* Trigger is ready bit */ +#define DEVICE_STATE_DATA_TRIG_RDY 8193 /* Trigger is ready bit */ enum protocol_version { SPO_MODEL, NON_SPO_MODEL, + ESERIES, }; enum data_source { @@ -55,7 +59,6 @@ enum data_source { struct siglent_sds_vendor { const char *name; const char *full_name; - const char *usb_name; }; struct siglent_sds_series { @@ -74,7 +77,7 @@ struct siglent_sds_model { const char *name; uint64_t min_timebase[2]; unsigned int analog_channels; - bool has_digital; + gboolean has_digital; unsigned int digital_channels; }; @@ -102,12 +105,16 @@ struct dev_context { /* Acquisition settings */ GSList *enabled_channels; uint64_t limit_frames; + uint64_t average_samples; + gboolean average_enabled; enum data_source data_source; uint64_t analog_frame_size; uint64_t digital_frame_size; uint64_t num_samples; - long blockHeaderSize; - float sampleRate; + uint64_t memory_depth_analog; + uint64_t memory_depth_digital; + long block_header_size; + float samplerate; /* Device settings */ gboolean analog_channels[MAX_ANALOG_CHANNELS]; @@ -134,10 +141,10 @@ struct dev_context { uint64_t num_channel_bytes; /* Number of bytes of block header read. */ uint64_t num_header_bytes; - /* Number of bytes in current data block, if 0 block header expected. */ + /* Number of data blocks bytes already read. */ uint64_t num_block_bytes; - /* Number of data block bytes already read. */ - uint64_t num_block_read; + /* Number of data blocks read. */ + int num_block_read; /* What to wait for in *_receive. */ enum wait_events wait_event; /* Trigger/block copying/stop waiting status. */ @@ -145,6 +152,7 @@ struct dev_context { /* Acq buffers used for reading from the scope and sending data to app. */ unsigned char *buffer; float *data; + GArray *dig_buffer; }; SR_PRIV int siglent_sds_config_set(const struct sr_dev_inst *sdi,