+struct measure_s {
+ double vpp;
+ double vmax;
+ double vmin;
+ double vamplitude;
+ double vtop;
+ double vbase;
+ double vaverage;
+ double vrms;
+
+ double overshoot;
+ double preshoot;
+
+ double frequency;
+ double risetime;
+ double falltime;
+
+ double period;
+ double pwidth;
+ double nwidth;
+ double pdutycycle;
+ double ndutycycle;
+
+ double pdelay;
+ double ndelay;
+};
+
+struct channel_s {
+ int bwlimit_enabled;
+ char coupling[32];
+ int displayed;
+ int inverted;
+ double offset;
+ double probe;
+ double scale;
+ int filter_enabled;
+ int memory_depth;
+ char vernier[32];
+};
+
struct scope {
struct {
- struct usb_dev_handle *dev;
+ struct libusb_device_handle *dev;
int ep_bulk_out;
int ep_bulk_in;
unsigned int wMaxPacketSize_in;
} keyboard;
struct {
- /* TODO */
+ struct measure_s ch1;
+ struct measure_s ch2;
+
+ int total;
+ char source[32];
} measure;
struct {
char type[32];
char mode[32];
int averages;
- double srate_chan1;
- double srate_chan2;
+ double srate_ch1;
+ double srate_ch2;
double srate_digital;
} acquire;
struct {
- /* TODO */
+ char type[32];
+ char grid[32];
+ int persist;
+ char mnudisplay[32];
+ int mnustatus;
+ char screen[32];
+ int brightness;
+ int intensity;
} display;
struct {
- /* TODO */
+ struct channel_s ch1;
+ struct channel_s ch2;
} channel;
struct {
} timebase;
struct {
+ char mode[32];
+
/* TODO */
} trigger;
} la;
struct {
- /* TODO */
+ int displayed;
} math;
+
+ struct {
+ int displayed;
+ } fft;
} status;
+
char idn[128];
};
int scope_get_truth_value(struct scope *sc, char *cmd);
int scope_get_int(struct scope *sc, char *cmd);
double scope_get_double(struct scope *sc, char*cmd);
+void update_scope_measurements(struct scope *sc);
int update_scope_status(struct scope *sc);
+char *scope_get_data(struct scope *sc, char *source, int *len);