*/
#include <glib.h>
+#include <string.h>
+#include <math.h>
#include "libsigrok.h"
#include "libsigrok-internal.h"
#include "protocol.h"
-#include <string.h>
-#include <math.h>
-
/* Reverse the high nibble into the low nibble */
static uint8_t decode_digit(uint8_t in)
return out;
}
-static void decode_buf(struct dev_context *devc, unsigned char *data)
+static void decode_buf(struct sr_dev_inst *sdi, unsigned char *data)
{
struct sr_datafeed_packet packet;
struct sr_datafeed_analog analog;
+ struct dev_context *devc;
long factor, ivalue;
uint8_t digits[4];
gboolean is_duty, is_continuity, is_diode, is_ac, is_dc, is_auto;
gboolean is_hold, is_max, is_min, is_relative, minus;
float fvalue;
+ devc = sdi->priv;
+
digits[0] = decode_digit(data[12]);
digits[1] = decode_digit(data[11]);
digits[2] = decode_digit(data[10]);
}
/* Decimal point position */
+ factor = 0;
switch (data[7] >> 4) {
case 0x00:
factor = 0;
factor = 3;
break;
default:
- sr_err("Unknown decimal point value %.2x.", data[7]);
+ sr_err("Unknown decimal point byte: 0x%.2x.", data[7]);
+ break;
}
/* Minus flag */
break;
case 0x80:
/* Never seen */
- sr_dbg("Unknown mode right detail %.2x.", data[4]);
+ sr_dbg("Unknown mode right detail: 0x%.2x.", data[4]);
break;
default:
- sr_dbg("Unknown/invalid mode right detail %.2x.", data[4]);
+ sr_dbg("Unknown/invalid mode right detail: 0x%.2x.", data[4]);
+ break;
}
/* Scale flags on the right, continued */
analog.mq = SR_MQ_DUTY_CYCLE;
analog.unit = SR_UNIT_PERCENTAGE;
} else
- sr_dbg("Unknown measurement mode %.2x.", data[3]);
+ sr_dbg("Unknown measurement mode: %.2x.", data[3]);
break;
case 0x01:
if (is_diode) {
break;
case 0x08:
/* Never seen */
- sr_dbg("Unknown measurement mode %.2x.", data[3]);
+ sr_dbg("Unknown measurement mode: 0x%.2x.", data[3]);
break;
case 0x10:
analog.mq = SR_MQ_FREQUENCY;
analog.unit = SR_UNIT_FAHRENHEIT;
break;
default:
- sr_dbg("Unknown/invalid measurement mode %.2x.", data[3]);
+ sr_dbg("Unknown/invalid measurement mode: 0x%.2x.", data[3]);
+ break;
}
if (analog.mq == -1)
return;
if (is_relative)
analog.mqflags |= SR_MQFLAG_RELATIVE;
+ analog.probes = sdi->probes;
analog.num_samples = 1;
analog.data = &fvalue;
packet.type = SR_DF_ANALOG;
SR_PRIV int victor_dmm_receive_data(struct sr_dev_inst *sdi, unsigned char *buf)
{
- struct dev_context *devc;
GString *dbg;
int i;
unsigned char data[DMM_DATA_SIZE];
6, 13, 5, 11, 2, 7, 9, 8, 3, 10, 12, 0, 4, 1
};
- devc = sdi->priv;
-
for (i = 0; i < DMM_DATA_SIZE && buf[i] == 0; i++);
if (i == DMM_DATA_SIZE) {
/* This DMM outputs all zeroes from time to time, just ignore it. */
g_string_free(dbg, TRUE);
}
- decode_buf(devc, data);
+ decode_buf(sdi, data);
return SR_OK;
}
-