- analog.channels = g_slist_append(NULL, ch);
- analog.num_samples = data->len;
- analog.data = (float *) data->data;
- analog.mq = SR_MQ_VOLTAGE;
- analog.unit = SR_UNIT_VOLT;
- analog.mqflags = 0;
- packet.type = SR_DF_ANALOG_OLD;
+ packet.type = SR_DF_ANALOG;
+
+ analog.data = data->data;
+ analog.num_samples = data->len / sizeof(float);
+ analog.encoding = &encoding;
+ analog.meaning = &meaning;
+ analog.spec = &spec;
+
+ encoding.unitsize = sizeof(float);
+ encoding.is_signed = TRUE;
+ encoding.is_float = TRUE;
+ encoding.is_bigendian = FALSE;
+ encoding.digits = 0;
+ encoding.is_digits_decimal = FALSE;
+ encoding.scale.p = 1;
+ encoding.scale.q = 1;
+ encoding.offset.p = 0;
+ encoding.offset.q = 1;
+ if (state->analog_channels[ch->index].probe_unit == 'V') {
+ meaning.mq = SR_MQ_VOLTAGE;
+ meaning.unit = SR_UNIT_VOLT;
+ } else {
+ meaning.mq = SR_MQ_CURRENT;
+ meaning.unit = SR_UNIT_AMPERE;
+ }
+ meaning.mqflags = 0;
+ meaning.channels = g_slist_append(NULL, ch);
+ spec.spec_digits = 0;