info->is_auto = !info->is_manu;
}
-static void handle_flags(struct sr_datafeed_analog_old *analog,
+static void handle_flags(struct sr_datafeed_analog *analog,
float *floatval, const struct vc870_info *info)
{
/*
/* Measurement modes */
if (info->is_voltage) {
- analog->mq = SR_MQ_VOLTAGE;
- analog->unit = SR_UNIT_VOLT;
+ analog->meaning->mq = SR_MQ_VOLTAGE;
+ analog->meaning->unit = SR_UNIT_VOLT;
}
if (info->is_current) {
- analog->mq = SR_MQ_CURRENT;
- analog->unit = SR_UNIT_AMPERE;
+ analog->meaning->mq = SR_MQ_CURRENT;
+ analog->meaning->unit = SR_UNIT_AMPERE;
}
if (info->is_resistance) {
- analog->mq = SR_MQ_RESISTANCE;
- analog->unit = SR_UNIT_OHM;
+ analog->meaning->mq = SR_MQ_RESISTANCE;
+ analog->meaning->unit = SR_UNIT_OHM;
}
if (info->is_frequency) {
- analog->mq = SR_MQ_FREQUENCY;
- analog->unit = SR_UNIT_HERTZ;
+ analog->meaning->mq = SR_MQ_FREQUENCY;
+ analog->meaning->unit = SR_UNIT_HERTZ;
}
if (info->is_capacitance) {
- analog->mq = SR_MQ_CAPACITANCE;
- analog->unit = SR_UNIT_FARAD;
+ analog->meaning->mq = SR_MQ_CAPACITANCE;
+ analog->meaning->unit = SR_UNIT_FARAD;
}
if (info->is_temperature) {
- analog->mq = SR_MQ_TEMPERATURE;
- analog->unit = SR_UNIT_CELSIUS;
+ analog->meaning->mq = SR_MQ_TEMPERATURE;
+ analog->meaning->unit = SR_UNIT_CELSIUS;
/* TODO: Handle Fahrenheit in auxiliary display. */
- // analog->unit = SR_UNIT_FAHRENHEIT;
+ // analog->meaning->unit = SR_UNIT_FAHRENHEIT;
}
if (info->is_continuity) {
- analog->mq = SR_MQ_CONTINUITY;
- analog->unit = SR_UNIT_BOOLEAN;
+ analog->meaning->mq = SR_MQ_CONTINUITY;
+ analog->meaning->unit = SR_UNIT_BOOLEAN;
/* Vendor docs: "< 20 Ohm acoustic" */
*floatval = (*floatval < 0.0 || *floatval > 20.0) ? 0.0 : 1.0;
}
if (info->is_diode) {
- analog->mq = SR_MQ_VOLTAGE;
- analog->unit = SR_UNIT_VOLT;
+ analog->meaning->mq = SR_MQ_VOLTAGE;
+ analog->meaning->unit = SR_UNIT_VOLT;
}
if (info->is_loop_current) {
/* 4mA = 0%, 20mA = 100% */
- analog->mq = SR_MQ_CURRENT;
- analog->unit = SR_UNIT_PERCENTAGE;
+ analog->meaning->mq = SR_MQ_CURRENT;
+ analog->meaning->unit = SR_UNIT_PERCENTAGE;
}
if (info->is_power) {
- analog->mq = SR_MQ_POWER;
- analog->unit = SR_UNIT_WATT;
+ analog->meaning->mq = SR_MQ_POWER;
+ analog->meaning->unit = SR_UNIT_WATT;
}
if (info->is_power_apparent_power) {
- analog->mq = SR_MQ_POWER;
- analog->unit = SR_UNIT_WATT;
+ analog->meaning->mq = SR_MQ_POWER;
+ analog->meaning->unit = SR_UNIT_WATT;
/* TODO: Handle apparent power. */
- // analog->mq = SR_MQ_APPARENT_POWER;
- // analog->unit = SR_UNIT_VOLT_AMPERE;
+ // analog->meaning->mq = SR_MQ_APPARENT_POWER;
+ // analog->meaning->unit = SR_UNIT_VOLT_AMPERE;
}
if (info->is_power_factor_freq) {
- analog->mq = SR_MQ_POWER_FACTOR;
- analog->unit = SR_UNIT_UNITLESS;
+ analog->meaning->mq = SR_MQ_POWER_FACTOR;
+ analog->meaning->unit = SR_UNIT_UNITLESS;
/* TODO: Handle frequency. */
- // analog->mq = SR_MQ_FREQUENCY;
- // analog->unit = SR_UNIT_HERTZ;
+ // analog->meaning->mq = SR_MQ_FREQUENCY;
+ // analog->meaning->unit = SR_UNIT_HERTZ;
}
if (info->is_v_a_rms_value) {
- analog->mqflags |= SR_MQFLAG_RMS;
- analog->mq = SR_MQ_VOLTAGE;
- analog->unit = SR_UNIT_VOLT;
+ analog->meaning->mqflags |= SR_MQFLAG_RMS;
+ analog->meaning->mq = SR_MQ_VOLTAGE;
+ analog->meaning->unit = SR_UNIT_VOLT;
/* TODO: Handle effective current value */
- // analog->mq = SR_MQ_CURRENT;
- // analog->unit = SR_UNIT_AMPERE;
+ // analog->meaning->mq = SR_MQ_CURRENT;
+ // analog->meaning->unit = SR_UNIT_AMPERE;
}
/* Measurement related flags */
if (info->is_ac)
- analog->mqflags |= SR_MQFLAG_AC;
+ analog->meaning->mqflags |= SR_MQFLAG_AC;
if (info->is_dc)
- analog->mqflags |= SR_MQFLAG_DC;
+ analog->meaning->mqflags |= SR_MQFLAG_DC;
if (info->is_auto)
- analog->mqflags |= SR_MQFLAG_AUTORANGE;
+ analog->meaning->mqflags |= SR_MQFLAG_AUTORANGE;
if (info->is_diode)
- analog->mqflags |= SR_MQFLAG_DIODE;
+ analog->meaning->mqflags |= SR_MQFLAG_DIODE;
if (info->is_hold)
/*
* Note: HOLD only affects the number displayed on the LCD,
* but not the value sent via the protocol! It also does not
* affect the bargraph on the LCD.
*/
- analog->mqflags |= SR_MQFLAG_HOLD;
+ analog->meaning->mqflags |= SR_MQFLAG_HOLD;
if (info->is_max)
- analog->mqflags |= SR_MQFLAG_MAX;
+ analog->meaning->mqflags |= SR_MQFLAG_MAX;
if (info->is_min)
- analog->mqflags |= SR_MQFLAG_MIN;
+ analog->meaning->mqflags |= SR_MQFLAG_MIN;
if (info->is_rel)
- analog->mqflags |= SR_MQFLAG_RELATIVE;
+ analog->meaning->mqflags |= SR_MQFLAG_RELATIVE;
/* Other flags */
if (info->is_batt)
}
SR_PRIV int sr_vc870_parse(const uint8_t *buf, float *floatval,
- struct sr_datafeed_analog_old *analog, void *info)
+ struct sr_datafeed_analog *analog, void *info)
{
int ret;
struct vc870_info *info_local;