+ meaning.mqflags = 0;
+ meaning.channels = g_slist_append(NULL, ch);
+ /* TODO: Use proper 'digits' value for this device (and its modes). */
+ spec.spec_digits = 2;
+ packet.payload = &analog;
+ sr_session_send(sdi, &packet);
+ g_slist_free(meaning.channels);
+ g_byte_array_free(data, TRUE);
+ data = NULL;
+ break;
+ case SR_CHANNEL_LOGIC:
+ if (sr_scpi_get_block(sdi->conn, NULL, &data) != SR_OK) {
+ g_free(data);
+ return TRUE;
+ }
+
+ packet.type = SR_DF_FRAME_BEGIN;
+ sr_session_send(sdi, &packet);
+
+ logic.length = data->len;
+ logic.unitsize = 1;
+ logic.data = data->data;
+ packet.type = SR_DF_LOGIC;
+ packet.payload = &logic;
+ sr_session_send(sdi, &packet);
+ g_byte_array_free(data, TRUE);
+ data = NULL;
+ break;
+ default:
+ sr_err("Invalid channel type.");
+ break;
+ }
+
+ packet.type = SR_DF_FRAME_END;
+ sr_session_send(sdi, &packet);
+
+ if (devc->current_channel->next) {
+ devc->current_channel = devc->current_channel->next;
+ hmo_request_data(sdi);
+ } else if (++devc->num_frames == devc->frame_limit) {
+ sdi->driver->dev_acquisition_stop(sdi);
+ } else {
+ devc->current_channel = devc->enabled_channels;
+ hmo_request_data(sdi);