/* size of payloads sent across the session bus */
/** @cond PRIVATE */
-#define CHUNKSIZE (512 * 1024)
+#define CHUNKSIZE (4 * 1024 * 1024)
/** @endcond */
SR_PRIV struct sr_dev_driver session_driver_info;
int bytes_read;
uint64_t samplerate;
int unitsize;
- int num_channels;
+ int num_logic_channels;
int num_analog_channels;
int cur_analog_channel;
GArray *analog_channels;
sr_dbg("Opened %s.", capturefile);
} else if (vdev->cur_analog_channel < vdev->num_analog_channels) {
vdev->capturefile = g_strdup_printf("analog-1-%d",
- vdev->num_channels + vdev->cur_analog_channel + 1);
+ vdev->num_logic_channels + vdev->cur_analog_channel + 1);
vdev->cur_analog_channel++;
vdev->cur_chunk = 0;
return TRUE;
} else {
/* We got all the chunks, finish up. */
+ g_free(vdev->capturefile);
+
+ /* If the file has logic channels, the initial value for
+ * capturefile is set by stream_session_data() - however only
+ * once. In order to not mess this mechanism up, we simulate
+ * this here if needed. For purely analog files, capturefile
+ * is not set.
+ */
+ if (vdev->num_logic_channels)
+ vdev->capturefile = g_strdup("logic-1");
+ else
+ vdev->capturefile = NULL;
return FALSE;
}
}
if (vdev->cur_analog_channel != 0) {
packet.type = SR_DF_ANALOG;
packet.payload = &analog;
- sr_analog_init(&analog, &encoding, &meaning, &spec, 0);
+ /* 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));
vdev->unitsize = g_variant_get_uint64(data);
break;
case SR_CONF_NUM_LOGIC_CHANNELS:
- vdev->num_channels = g_variant_get_int32(data);
+ vdev->num_logic_channels = g_variant_get_int32(data);
break;
case SR_CONF_NUM_ANALOG_CHANNELS:
vdev->num_analog_channels = g_variant_get_int32(data);