+/*--- dmm/vc870.c -----------------------------------------------------------*/
+
+#define VC870_PACKET_SIZE 23
+
+struct vc870_info {
+ gboolean is_voltage, is_dc, is_ac, is_temperature, is_resistance;
+ gboolean is_continuity, is_capacitance, is_diode, is_loop_current;
+ gboolean is_current, is_micro, is_milli, is_power;
+ gboolean is_power_factor_freq, is_power_apparent_power, is_v_a_rms_value;
+ gboolean is_sign2, is_sign1, is_batt, is_ol1, is_max, is_min;
+ gboolean is_maxmin, is_rel, is_ol2, is_open, is_manu, is_hold;
+ gboolean is_light, is_usb, is_warning, is_auto_power, is_misplug_warn;
+ gboolean is_lo, is_hi, is_open2;
+
+ gboolean is_frequency, is_dual_display, is_auto;
+};
+
+SR_PRIV gboolean sr_vc870_packet_valid(const uint8_t *buf);
+SR_PRIV int sr_vc870_parse(const uint8_t *buf, float *floatval,
+ struct sr_datafeed_analog *analog, void *info);
+
+/*--- dmm/vc96.c ------------------------------------------------------------*/
+
+#define VC96_PACKET_SIZE 13
+
+struct vc96_info {
+ size_t ch_idx;
+ gboolean is_ac, is_dc, is_resistance, is_diode, is_ampere, is_volt;
+ gboolean is_ohm, is_micro, is_milli, is_kilo, is_mega, is_hfe;
+ gboolean is_unitless;
+};
+
+SR_PRIV gboolean sr_vc96_packet_valid(const uint8_t *buf);
+SR_PRIV int sr_vc96_parse(const uint8_t *buf, float *floatval,
+ struct sr_datafeed_analog *analog, void *info);
+
+/*--- lcr/es51919.c ---------------------------------------------------------*/
+
+/* Acquisition details which apply to all supported serial-lcr devices. */
+struct lcr_parse_info {
+ size_t ch_idx;
+ uint64_t output_freq;
+ const char *circuit_model;
+};
+
+#define ES51919_PACKET_SIZE 17
+#define ES51919_CHANNEL_COUNT 2
+#define ES51919_COMM_PARAM "9600/8n1/rts=1/dtr=1"
+
+SR_PRIV int es51919_config_get(uint32_t key, GVariant **data,
+ const struct sr_dev_inst *sdi, const struct sr_channel_group *cg);
+SR_PRIV int es51919_config_set(uint32_t key, GVariant *data,
+ const struct sr_dev_inst *sdi, const struct sr_channel_group *cg);
+SR_PRIV int es51919_config_list(uint32_t key, GVariant **data,
+ const struct sr_dev_inst *sdi, const struct sr_channel_group *cg);
+SR_PRIV gboolean es51919_packet_valid(const uint8_t *pkt);
+SR_PRIV int es51919_packet_parse(const uint8_t *pkt, float *floatval,
+ struct sr_datafeed_analog *analog, void *info);
+
+/*--- dmm/ut372.c -----------------------------------------------------------*/
+
+#define UT372_PACKET_SIZE 27
+
+struct ut372_info {
+ int dummy;
+};
+
+SR_PRIV gboolean sr_ut372_packet_valid(const uint8_t *buf);
+SR_PRIV int sr_ut372_parse(const uint8_t *buf, float *floatval,
+ struct sr_datafeed_analog *analog, void *info);
+
+/*--- dmm/asycii.c ----------------------------------------------------------*/
+
+#define ASYCII_PACKET_SIZE 16
+
+struct asycii_info {
+ gboolean is_ac, is_dc, is_ac_and_dc;
+ gboolean is_resistance, is_capacitance, is_diode, is_gain;
+ gboolean is_frequency, is_duty_cycle, is_duty_pos, is_duty_neg;
+ gboolean is_pulse_width, is_period_pos, is_period_neg;
+ gboolean is_pulse_count, is_count_pos, is_count_neg;
+ gboolean is_ampere, is_volt, is_volt_ampere, is_farad, is_ohm;
+ gboolean is_hertz, is_percent, is_seconds, is_decibel;
+ gboolean is_pico, is_nano, is_micro, is_milli, is_kilo, is_mega;
+ gboolean is_unitless;
+ gboolean is_peak_min, is_peak_max;
+ gboolean is_invalid;
+};
+
+#ifdef HAVE_SERIAL_COMM
+SR_PRIV int sr_asycii_packet_request(struct sr_serial_dev_inst *serial);
+#endif
+SR_PRIV gboolean sr_asycii_packet_valid(const uint8_t *buf);
+SR_PRIV int sr_asycii_parse(const uint8_t *buf, float *floatval,
+ struct sr_datafeed_analog *analog, void *info);
+
+/*--- dmm/eev121gw.c --------------------------------------------------------*/
+
+#define EEV121GW_PACKET_SIZE 19
+
+enum eev121gw_display {
+ EEV121GW_DISPLAY_MAIN,
+ EEV121GW_DISPLAY_SUB,
+ EEV121GW_DISPLAY_BAR,
+ EEV121GW_DISPLAY_COUNT,
+};
+
+struct eev121gw_info {
+ /* Selected channel. */
+ size_t ch_idx;
+ /*
+ * Measured value, number and sign/overflow flags, scale factor
+ * and significant digits.
+ */
+ uint32_t uint_value;
+ gboolean is_ofl, is_neg;
+ int factor, digits;
+ /* Currently active mode (meter's function). */
+ gboolean is_ac, is_dc, is_voltage, is_current, is_power, is_gain;
+ gboolean is_resistance, is_capacitance, is_diode, is_temperature;
+ gboolean is_continuity, is_frequency, is_period, is_duty_cycle;
+ /* Quantities associated with mode/function. */
+ gboolean is_ampere, is_volt, is_volt_ampere, is_dbm;
+ gboolean is_ohm, is_farad, is_celsius, is_fahrenheit;
+ gboolean is_hertz, is_seconds, is_percent, is_loop_current;
+ gboolean is_unitless, is_logic;
+ /* Other indicators. */
+ gboolean is_min, is_max, is_avg, is_1ms_peak, is_rel, is_hold;
+ gboolean is_low_pass, is_mem, is_bt, is_auto_range, is_test;
+ gboolean is_auto_poweroff, is_low_batt;
+};
+
+extern SR_PRIV const char *eev121gw_channel_formats[];
+SR_PRIV gboolean sr_eev121gw_packet_valid(const uint8_t *buf);
+SR_PRIV int sr_eev121gw_3displays_parse(const uint8_t *buf, float *floatval,
+ struct sr_datafeed_analog *analog, void *info);
+
+/*--- scale/kern.c ----------------------------------------------------------*/
+
+struct kern_info {
+ gboolean is_gram, is_carat, is_ounce, is_pound, is_troy_ounce;
+ gboolean is_pennyweight, is_grain, is_tael, is_momme, is_tola;
+ gboolean is_percentage, is_piece, is_unstable, is_stable, is_error;
+ int buflen;
+};
+
+SR_PRIV gboolean sr_kern_packet_valid(const uint8_t *buf);
+SR_PRIV int sr_kern_parse(const uint8_t *buf, float *floatval,
+ struct sr_datafeed_analog *analog, void *info);
+
+/*--- sw_limits.c -----------------------------------------------------------*/
+
+struct sr_sw_limits {
+ uint64_t limit_samples;
+ uint64_t limit_frames;
+ uint64_t limit_msec;
+ uint64_t samples_read;
+ uint64_t frames_read;
+ uint64_t start_time;
+};
+
+SR_PRIV int sr_sw_limits_config_get(struct sr_sw_limits *limits, uint32_t key,
+ GVariant **data);
+SR_PRIV int sr_sw_limits_config_set(struct sr_sw_limits *limits, uint32_t key,
+ GVariant *data);
+SR_PRIV void sr_sw_limits_acquisition_start(struct sr_sw_limits *limits);
+SR_PRIV gboolean sr_sw_limits_check(struct sr_sw_limits *limits);
+SR_PRIV void sr_sw_limits_update_samples_read(struct sr_sw_limits *limits,
+ uint64_t samples_read);
+SR_PRIV void sr_sw_limits_update_frames_read(struct sr_sw_limits *limits,
+ uint64_t frames_read);
+SR_PRIV void sr_sw_limits_init(struct sr_sw_limits *limits);