X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fsiglent-sds%2Fprotocol.h;h=89abaf640b9331c347897190c947f0936f3d82b6;hb=7f0463840ab5d6a85daaa76850558d2b71e596cf;hp=20d4363a0569501393ed9ce9443629c2a475717f;hpb=fe1aa53613c2421fd6b2c2991122584cbe34342a;p=libsigrok.git diff --git a/src/hardware/siglent-sds/protocol.h b/src/hardware/siglent-sds/protocol.h index 20d4363a..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 { @@ -73,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; }; @@ -107,6 +111,8 @@ struct dev_context { uint64_t analog_frame_size; uint64_t digital_frame_size; uint64_t num_samples; + uint64_t memory_depth_analog; + uint64_t memory_depth_digital; long block_header_size; float samplerate; @@ -135,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. */ @@ -146,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,