X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Frigol-ds1xx2%2Fprotocol.h;h=7419ab7b5f35b2bb7af837de9e2284f7785ad60a;hb=93d719cde6dbd3cc79b035b223e5a0d4ab5926cb;hp=fa056030f4e49ee10e54338f1221c373281d1607;hpb=333bf022e3ab268fb575ec61ccf0c0f17213647c;p=libsigrok.git diff --git a/hardware/rigol-ds1xx2/protocol.h b/hardware/rigol-ds1xx2/protocol.h index fa056030..7419ab7b 100644 --- a/hardware/rigol-ds1xx2/protocol.h +++ b/hardware/rigol-ds1xx2/protocol.h @@ -2,6 +2,7 @@ * This file is part of the libsigrok project. * * Copyright (C) 2012 Martin Ling + * Copyright (C) 2013 Bert Vermeulen * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,54 +25,48 @@ #include "libsigrok.h" #include "libsigrok-internal.h" -/* Message logging helpers with driver-specific prefix string. */ -#define DRIVER_LOG_DOMAIN "rigol-ds1xx2: " -#define sr_log(l, s, args...) sr_log(l, DRIVER_LOG_DOMAIN s, ## args) -#define sr_spew(s, args...) sr_spew(DRIVER_LOG_DOMAIN s, ## args) -#define sr_dbg(s, args...) sr_dbg(DRIVER_LOG_DOMAIN s, ## args) -#define sr_info(s, args...) sr_info(DRIVER_LOG_DOMAIN s, ## args) -#define sr_warn(s, args...) sr_warn(DRIVER_LOG_DOMAIN s, ## args) -#define sr_err(s, args...) sr_err(DRIVER_LOG_DOMAIN s, ## args) +/* Message logging helpers with subsystem-specific prefix string. */ +#define LOG_PREFIX "rigol-ds1xx2: " +#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) +#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) +#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) +#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) +#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) +#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) -#define WAVEFORM_SIZE 600 +#define ANALOG_WAVEFORM_SIZE 600 +#define DIGITAL_WAVEFORM_SIZE 1210 /** Private, per-device-instance driver context. */ struct dev_context { - /** The current frame limit. */ - uint64_t limit_frames; - - /** The current sampling limit (in number of samples). */ - uint64_t limit_samples; - - /** The current sampling limit (in ms). */ - uint64_t limit_msec; + /* Device features */ + gboolean has_digital; - /** Opaque pointer passed in by the frontend. */ + /* Acquisition settings */ + GSList *enabled_analog_probes; + GSList *enabled_digital_probes; + uint64_t limit_frames; void *cb_data; - /** The current number of already received frames. */ + /* Device settings */ + gboolean analog_channels[2]; + gboolean digital_channels[16]; + float timebase; + float vdiv[2]; + float vert_offset[2]; + char *trigger_source; + float horiz_triggerpos; + char *trigger_slope; + char *coupling[2]; + + /* Operational state */ uint64_t num_frames; - - /** The current number of already received samples. */ - uint64_t num_samples; - - /** Current scale setting. */ - float scale; - - /** Current offset setting. */ - float offset; - - /** Path to USBTMC character device file. */ - char *device; - - /** USBTMC character device file descriptor. */ - int fd; - - GSList *enabled_probes; + uint64_t num_frame_bytes; + struct sr_probe *channel_frame; }; -SR_PRIV int rigol_ds1xx2_receive_data(int fd, int revents, void *cb_data); - -SR_PRIV int rigol_ds1xx2_send_data(int fd, const char *format, ...); +SR_PRIV int rigol_ds1xx2_receive(int fd, int revents, void *cb_data); +SR_PRIV int rigol_ds1xx2_send(const struct sr_dev_inst *sdi, const char *format, ...); +SR_PRIV int rigol_ds1xx2_get_dev_cfg(const struct sr_dev_inst *sdi); #endif