PROTOCOL_V2, /* DS1000 */
PROTOCOL_V3, /* DS2000, DSO1000 */
PROTOCOL_V4, /* DS1000Z */
+ PROTOCOL_V5, /* MSO5000 */
};
enum data_format {
int buffer_samples;
};
+enum cmds {
+ CMD_GET_HORIZ_TRIGGERPOS,
+ CMD_SET_HORIZ_TRIGGERPOS,
+};
+
+struct rigol_ds_command {
+ int cmd;
+ const char *str;
+};
+
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;
+ const char **trigger_sources;
+ unsigned int num_trigger_sources;
+ const struct rigol_ds_command *cmds;
};
enum wait_events {
WAIT_STOP, /* Wait for scope stopping (only single shots) */
};
-/** Private, per-device-instance driver context. */
struct dev_context {
- /* Device model */
const struct rigol_ds_model *model;
enum data_format format;
gboolean digital_channels[MAX_DIGITAL_CHANNELS];
gboolean la_enabled;
float timebase;
+ float sample_rate;
+ float attenuation[MAX_ANALOG_CHANNELS];
float vdiv[MAX_ANALOG_CHANNELS];
int vert_reference[MAX_ANALOG_CHANNELS];
+ float vert_origin[MAX_ANALOG_CHANNELS];
float vert_offset[MAX_ANALOG_CHANNELS];
+ float vert_inc[MAX_ANALOG_CHANNELS];
char *trigger_source;
float horiz_triggerpos;
char *trigger_slope;
+ float trigger_level;
char *coupling[MAX_ANALOG_CHANNELS];
- /* Operational state */
-
/* Number of frames received in total. */
uint64_t num_frames;
+ /* Number of frames available from the Segmented data source */
+ uint64_t num_frames_segmented;
/* GSList entry for the current channel. */
GSList *channel_entry;
/* Number of bytes received for current channel. */