SR_CONF_CONTINUOUS,
};
-static const char *probe_names[] = {
+static const char *channel_names[] = {
"0", "1", "2", "3", "4", "5", "6", "7",
"8", "9", "10", "11", "12", "13", "14", "15",
NULL,
SR_PRIV struct sr_dev_driver fx2lafw_driver_info;
static struct sr_dev_driver *di = &fx2lafw_driver_info;
-static int dev_clear(void)
-{
- return std_dev_clear(di, NULL);
-}
-
static int init(struct sr_context *sr_ctx)
{
return std_init(sr_ctx, di, LOG_PREFIX);
struct dev_context *devc;
struct sr_dev_inst *sdi;
struct sr_usb_dev_inst *usb;
- struct sr_probe *probe;
+ struct sr_channel *ch;
struct sr_config *src;
const struct fx2lafw_profile *prof;
GSList *l, *devices, *conn_devices;
struct libusb_device_descriptor des;
libusb_device **devlist;
- int devcnt, num_logic_probes, ret, i, j;
+ int devcnt, num_logic_channels, ret, i, j;
const char *conn;
drvc = di->priv;
return NULL;
sdi->driver = di;
- /* Fill in probelist according to this device's profile. */
- num_logic_probes = prof->dev_caps & DEV_CAPS_16BIT ? 16 : 8;
- for (j = 0; j < num_logic_probes; j++) {
- if (!(probe = sr_probe_new(j, SR_PROBE_LOGIC, TRUE,
- probe_names[j])))
+ /* Fill in channellist according to this device's profile. */
+ num_logic_channels = prof->dev_caps & DEV_CAPS_16BIT ? 16 : 8;
+ for (j = 0; j < num_logic_channels; j++) {
+ if (!(ch = sr_channel_new(j, SR_CHANNEL_LOGIC, TRUE,
+ channel_names[j])))
return NULL;
- sdi->probes = g_slist_append(sdi->probes, probe);
+ sdi->channels = g_slist_append(sdi->channels, ch);
}
devc = fx2lafw_dev_new();
sr_err("Firmware upload failed for "
"device %d.", devcnt);
sdi->inst_type = SR_INST_USB;
- sdi->conn = sr_usb_dev_inst_new (libusb_get_bus_number(devlist[i]),
+ sdi->conn = sr_usb_dev_inst_new(libusb_get_bus_number(devlist[i]),
0xff, NULL);
}
}
ret = libusb_claim_interface(usb->devhdl, USB_INTERFACE);
if (ret != 0) {
- switch(ret) {
+ switch (ret) {
case LIBUSB_ERROR_BUSY:
sr_err("Unable to claim USB interface. Another "
"program or driver has already claimed it.");
if (!(drvc = di->priv))
return SR_OK;
- ret = dev_clear();
+
+ ret = std_dev_clear(di, NULL);
g_free(drvc);
di->priv = NULL;
}
static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
- const struct sr_probe_group *probe_group)
+ const struct sr_channel_group *cg)
{
struct dev_context *devc;
struct sr_usb_dev_inst *usb;
char str[128];
- (void)probe_group;
+ (void)cg;
+
+ if (!sdi)
+ return SR_ERR_ARG;
+
+ devc = sdi->priv;
switch (id) {
case SR_CONF_CONN:
- if (!sdi || !sdi->conn)
+ if (!sdi->conn)
return SR_ERR_ARG;
usb = sdi->conn;
if (usb->address == 255)
snprintf(str, 128, "%d.%d", usb->bus, usb->address);
*data = g_variant_new_string(str);
break;
+ case SR_CONF_LIMIT_SAMPLES:
+ *data = g_variant_new_uint64(devc->limit_samples);
+ break;
case SR_CONF_SAMPLERATE:
- if (!sdi)
- return SR_ERR;
- devc = sdi->priv;
*data = g_variant_new_uint64(devc->cur_samplerate);
break;
default:
}
static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
- const struct sr_probe_group *probe_group)
+ const struct sr_channel_group *cg)
{
struct dev_context *devc;
int ret;
- (void)probe_group;
+ (void)cg;
if (sdi->status != SR_ST_ACTIVE)
return SR_ERR;
}
static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
- const struct sr_probe_group *probe_group)
+ const struct sr_channel_group *cg)
{
GVariant *gvar;
GVariantBuilder gvb;
(void)sdi;
- (void)probe_group;
+ (void)cg;
switch (key) {
case SR_CONF_SCAN_OPTIONS:
usb = sdi->conn;
/* Configures devc->trigger_* and devc->sample_wide */
- if (fx2lafw_configure_probes(sdi) != SR_OK) {
- sr_err("Failed to configure probes.");
+ if (fx2lafw_configure_channels(sdi) != SR_OK) {
+ sr_err("Failed to configure channels.");
return SR_ERR;
}
devc->cb_data = cb_data;
- devc->num_samples = 0;
+ devc->sent_samples = 0;
+ devc->acq_aborted = FALSE;
devc->empty_transfer_count = 0;
timeout = fx2lafw_get_timeout(devc);
/* Send header packet to the session bus. */
std_session_send_df_header(cb_data, LOG_PREFIX);
- if ((ret = fx2lafw_command_start_acquisition(usb->devhdl,
- devc->cur_samplerate, devc->sample_wide)) != SR_OK) {
+ if ((ret = fx2lafw_command_start_acquisition(sdi)) != SR_OK) {
fx2lafw_abort_acquisition(devc);
return ret;
}
.cleanup = cleanup,
.scan = scan,
.dev_list = dev_list,
- .dev_clear = dev_clear,
+ .dev_clear = NULL,
.config_get = config_get,
.config_set = config_set,
.config_list = config_list,