+/* Size of acquisition buffers */
+#define ACQ_BUFFER_SIZE 32768
+
+#define MAX_ANALOG_CHANNELS 4
+#define MAX_DIGITAL_CHANNELS 16
+
+enum protocol_version {
+ PROTOCOL_V1, /* VS5000 */
+ PROTOCOL_V2, /* DS1000 */
+ PROTOCOL_V3, /* DS2000, DSO1000 */
+};
+
+enum data_format {
+ /* Used by DS1000 versions up to 2.02, and VS5000 series */
+ FORMAT_RAW,
+ /* Used by DS1000 versions from 2.04 onwards and all later series */
+ FORMAT_IEEE488_2,
+};
+
+enum data_source {
+ DATA_SOURCE_LIVE,
+ DATA_SOURCE_MEMORY,
+ DATA_SOURCE_SEGMENTED,
+};
+
+struct rigol_ds_vendor {
+ const char *name;
+ const char *full_name;
+};
+
+struct rigol_ds_series {
+ const struct rigol_ds_vendor *vendor;
+ const char *name;
+ enum protocol_version protocol;
+ enum data_format format;
+ uint64_t max_timebase[2];
+ uint64_t min_vdiv[2];
+ int num_horizontal_divs;
+ int live_samples;
+ int buffer_samples;
+};
+
+struct rigol_ds_model {
+ const struct rigol_ds_series *series;
+ const char *name;
+ uint64_t min_timebase[2];
+ unsigned int analog_channels;
+ bool has_digital;
+};
+
+enum wait_events {
+ WAIT_NONE, /* Don't wait */
+ WAIT_TRIGGER, /* Wait for trigger (only live capture) */
+ WAIT_BLOCK, /* Wait for block data (only when reading sample mem) */
+ WAIT_STOP, /* Wait for scope stopping (only single shots) */
+};