"8", "9", "10", "11", "12", "13", "14", "15",
};
-static const uint64_t samplerates[] = {
+static const uint64_t samplerates_la2016[] = {
SR_KHZ(20),
SR_KHZ(50),
SR_KHZ(100),
SR_MHZ(200),
};
+static const uint64_t samplerates_la1016[] = {
+ SR_KHZ(20),
+ SR_KHZ(50),
+ SR_KHZ(100),
+ SR_KHZ(200),
+ SR_KHZ(500),
+ SR_MHZ(1),
+ SR_MHZ(2),
+ SR_MHZ(4),
+ SR_MHZ(5),
+ SR_MHZ(8),
+ SR_MHZ(10),
+ SR_MHZ(20),
+ SR_MHZ(50),
+ SR_MHZ(100),
+};
+
static const float logic_threshold_value[] = {
1.58,
2.5,
static int config_list(uint32_t key, GVariant **data,
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
{
+ struct dev_context *devc;
+
switch (key) {
case SR_CONF_SCAN_OPTIONS:
case SR_CONF_DEVICE_OPTIONS:
return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts);
case SR_CONF_SAMPLERATE:
- *data = std_gvar_samplerates(ARRAY_AND_SIZE(samplerates));
+ if (!sdi)
+ return SR_ERR_ARG;
+ devc = sdi->priv;
+ if (devc->max_samplerate == SR_MHZ(200)) {
+ *data = std_gvar_samplerates(ARRAY_AND_SIZE(samplerates_la2016));
+ }
+ else {
+ *data = std_gvar_samplerates(ARRAY_AND_SIZE(samplerates_la1016));
+ }
break;
case SR_CONF_LIMIT_SAMPLES:
*data = std_gvar_tuple_u64(LA2016_NUM_SAMPLES_MIN, LA2016_NUM_SAMPLES_MAX);
devc->n_bytes_to_read -= transfer->actual_length;
if (devc->n_bytes_to_read) {
uint32_t to_read = devc->n_bytes_to_read;
- if (to_read > LA2016_BULK_MAX)
- to_read = LA2016_BULK_MAX;
+ /* determine read size for the next usb transfer */
+ if (to_read >= LA2016_USB_BUFSZ)
+ to_read = LA2016_USB_BUFSZ;
+ else /* last transfer, make read size some multiple of LA2016_EP6_PKTSZ */
+ to_read = (to_read + (LA2016_EP6_PKTSZ-1)) & ~(LA2016_EP6_PKTSZ-1);
libusb_fill_bulk_transfer(
transfer, usb->devhdl,
0x86, transfer->buffer, to_read,
if (devc->have_trigger == 0) {
if (la2016_has_triggered(sdi) == 0) {
- sr_dbg("not yet ready for download...");
+ /* not yet ready for download */
return TRUE;
}
devc->have_trigger = 1;
g_free(devc->convbuffer);
devc->convbuffer = NULL;
+ devc->transfer = NULL;
+
sr_dbg("transfer is now finished");
}