- memset(&analog, 0, sizeof(struct sr_datafeed_analog_old));
-
- analog.channels = sdi->channels;
- analog.num_samples = 1;
- analog.mq = -1;
+ sent_sample = FALSE;
+ memset(info, 0, dmm->info_size);
+ for (ch_idx = 0; ch_idx < dmm->channel_count; ch_idx++) {
+ /* Note: digits/spec_digits will be overridden by the DMM parsers. */
+ sr_analog_init(&analog, &encoding, &meaning, &spec, 0);
+
+ 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->packet_parse) {
+ dmm->packet_parse(buf, &floatval, &analog, info);
+ analog.data = &floatval;
+ analog.encoding->unitsize = sizeof(floatval);
+ } else if (dmm->packet_parse_len) {
+ dmm->packet_parse_len(dmm->dmm_state, buf, len,
+ &doubleval, &analog, info);
+ analog.data = &doubleval;
+ analog.encoding->unitsize = sizeof(doubleval);
+ }