#include "libsigrok-internal.h"
#include "protocol.h"
-static void log_dmm_packet(const uint8_t *buf)
+static void log_dmm_packet(const uint8_t *buf, size_t len)
{
- sr_dbg("DMM packet: %02x %02x %02x %02x %02x %02x %02x "
- "%02x %02x %02x %02x %02x %02x %02x %02x %02x "
- "%02x %02x %02x %02x %02x %02x %02x",
- buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6],
- buf[7], buf[8], buf[9], buf[10], buf[11], buf[12], buf[13],
- buf[14], buf[15], buf[16], buf[17], buf[18], buf[19], buf[20],
- buf[21], buf[22]);
+ GString *text;
+
+ text = sr_hexdump_new(buf, len);
+ sr_dbg("DMM packet: %s", text->str);
+ sr_hexdump_free(text);
}
static void handle_packet(const uint8_t *buf, struct sr_dev_inst *sdi,
struct sr_analog_spec spec;
struct dev_context *devc;
gboolean sent_sample;
+ struct sr_channel *channel;
size_t ch_idx;
dmm = (struct dmm_info *)sdi->driver;
- log_dmm_packet(buf);
+ log_dmm_packet(buf, dmm->packet_size);
devc = sdi->priv;
sent_sample = FALSE;
/* Note: digits/spec_digits will be overridden by the DMM parsers. */
sr_analog_init(&analog, &encoding, &meaning, &spec, 0);
- analog.meaning->channels =
- g_slist_append(NULL, g_slist_nth_data(sdi->channels, ch_idx));
+ channel = g_slist_nth_data(sdi->channels, ch_idx);
+ analog.meaning->channels = g_slist_append(NULL, channel);
analog.num_samples = 1;
analog.meaning->mq = 0;
if (dmm->dmm_details)
dmm->dmm_details(&analog, info);
- if (analog.meaning->mq != 0) {
+ if (analog.meaning->mq != 0 && channel->enabled) {
/* Got a measurement. */
packet.type = SR_DF_ANALOG;
packet.payload = &analog;