X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fagilent-dmm%2Fprotocol.h;h=540d0e6e1e4701b9e84f919a6705d22248859da7;hb=68321f73b924b0392c3a738f82e92374d448b9a8;hp=b065126ec348d48869db02998dd226d44506fb9a;hpb=6cf1a87bfb803e088234e2e313891d27379880cf;p=libsigrok.git diff --git a/src/hardware/agilent-dmm/protocol.h b/src/hardware/agilent-dmm/protocol.h index b065126e..540d0e6e 100644 --- a/src/hardware/agilent-dmm/protocol.h +++ b/src/hardware/agilent-dmm/protocol.h @@ -22,11 +22,22 @@ #define LOG_PREFIX "agilent-dmm" +#define MAX_CHANNELS 3 #define AGDMM_BUFSIZE 256 /* 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, @@ -36,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, }; @@ -48,32 +67,51 @@ enum { struct agdmm_profile { int model; const char *modelname; - const struct agdmm_job *jobs; + int nb_channels; + 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; - int cur_mq; - int cur_unit; - int cur_mqflags; - int cur_digits; - int cur_encoding; - int cur_exponent; - int cur_acdc; + 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]; + int cur_digits[MAX_CHANNELS]; + int cur_encoding[MAX_CHANNELS]; + int cur_exponent[MAX_CHANNELS]; 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); };