]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/agilent-dmm/protocol.h
output/csv: use intermediate time_t var, silence compiler warning
[libsigrok.git] / src / hardware / agilent-dmm / protocol.h
index c018ed3372bccb2273ba5656662473bd6a4d2464..540d0e6e1e4701b9e84f919a6705d22248859da7 100644 (file)
 /* Always USB-serial, 1ms is plenty. */
 #define SERIAL_WRITE_TIMEOUT_MS 1
 
+#define DEFAULT_DATA_SOURCE    DATA_SOURCE_LIVE
+
+enum {
+       DATA_SOURCE_LIVE,
+       DATA_SOURCE_LOG_HAND,
+       DATA_SOURCE_LOG_TRIG,
+       DATA_SOURCE_LOG_AUTO,
+       DATA_SOURCE_LOG_EXPO,
+};
+
 /* Supported models */
 enum {
        AGILENT_U1231 = 1,
@@ -37,10 +47,18 @@ enum {
        AGILENT_U1241,
        AGILENT_U1242,
 
+       KEYSIGHT_U1241C,
+       KEYSIGHT_U1242C,
+
        AGILENT_U1251,
        AGILENT_U1252,
        AGILENT_U1253,
 
+       AGILENT_U1271,
+       AGILENT_U1272,
+       AGILENT_U1273,
+       AGILENT_U1273AX,
+
        KEYSIGHT_U1281,
        KEYSIGHT_U1282,
 };
@@ -50,21 +68,27 @@ struct agdmm_profile {
        int model;
        const char *modelname;
        int nb_channels;
-       const struct agdmm_job *jobs;
+       const struct agdmm_job *jobs_live;
+       const struct agdmm_job *jobs_log;
        const struct agdmm_recv *recvs;
 };
 
-/* Private, per-device-instance driver context. */
 struct dev_context {
        const struct agdmm_profile *profile;
        struct sr_sw_limits limits;
+       int data_source;
 
-       /* Runtime. */
-       int64_t jobqueue[8];
+       const struct agdmm_job *jobs;
+       int current_job;
+       gboolean job_running;
+       gboolean job_again;
+       int64_t jobs_start[8];
        unsigned char buf[AGDMM_BUFSIZE];
        int buflen;
+       uint64_t cur_samplerate;
        struct sr_channel *cur_channel;
        struct sr_channel *cur_conf;
+       int cur_sample;
        int cur_mq[MAX_CHANNELS];
        int cur_unit[MAX_CHANNELS];
        int cur_mqflags[MAX_CHANNELS];
@@ -74,9 +98,20 @@ struct dev_context {
        int mode_tempaux;
        int mode_continuity;
        int mode_squarewave;
+       int mode_dbm_dbv;
+};
+
+enum job_type {
+       JOB_AGAIN = 1,
+       JOB_STOP,
+       JOB_CONF,
+       JOB_STAT,
+       JOB_FETC,
+       JOB_LOG,
 };
 
 struct agdmm_job {
+       enum job_type type;
        int interval;
        int (*send) (const struct sr_dev_inst *sdi);
 };