+ if (vdev->cur_analog_channel != 0) {
+ packet.type = SR_DF_ANALOG;
+ packet.payload = &analog;
+ /* TODO: Use proper 'digits' value for this device (and its modes). */
+ sr_analog_init(&analog, &encoding, &meaning, &spec, 2);
+ analog.meaning->channels = g_slist_prepend(NULL,
+ g_array_index(vdev->analog_channels,
+ struct sr_channel *, vdev->cur_analog_channel - 1));
+ analog.num_samples = ret / sizeof(float);
+ analog.meaning->mq = SR_MQ_VOLTAGE;
+ analog.meaning->unit = SR_UNIT_VOLT;
+ analog.meaning->mqflags = SR_MQFLAG_DC;
+ analog.data = (float *) buf;
+ } else {
+ if (ret % vdev->unitsize != 0)
+ sr_warn("Read size %d not a multiple of the"
+ " unit size %d.", ret, vdev->unitsize);
+ packet.type = SR_DF_LOGIC;
+ packet.payload = &logic;
+ logic.length = ret;
+ logic.unitsize = vdev->unitsize;
+ logic.data = buf;
+ }