+ case SR_DF_ANALOG:
+ analog = packet->payload;
+
+ if (ctx->inframe) {
+ handle_analog_frame(ctx, analog);
+ ret = SR_OK_CONTINUE;
+ break;
+ }
+
+ init_output(out, ctx, o);
+ k = 0;
+ l = NULL;
+
+ numch = g_slist_length(analog->channels);
+ if ((unsigned int)analog->num_samples > numch)
+ nums = analog->num_samples / numch;
+ else
+ nums = 1;
+
+ for (i = 0; i < nums; i++) {
+ for (j = 0; j < ctx->num_enabled_channels; j++) {
+ if (ctx->channels[j]->type == SR_CHANNEL_ANALOG) {
+ if (!l)
+ l = analog->channels;
+
+ if (ctx->channels[j] == l->data) {
+ g_string_append_printf(*out,
+ "%f", analog->data[k++]);
+ }
+
+ l = l->next;
+ }
+ g_string_append_c(*out, ctx->separator);
+ }
+ g_string_truncate(*out, (*out)->len - 1);
+ g_string_append_printf(*out, "\n");
+ }
+ break;
+ /* TODO case SR_DF_ANALOG2: */