/*
* This file is part of the libsigrok project.
*
- * Copyright (C) 2014 Kumar Abhishek <abhishek@theembeddedkitchen.net>
+ * Copyright (C) 2014-17 Kumar Abhishek <abhishek@theembeddedkitchen.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
static const uint32_t devopts[] = {
SR_CONF_CONTINUOUS,
SR_CONF_LIMIT_SAMPLES | SR_CONF_GET | SR_CONF_SET,
- SR_CONF_SAMPLERATE | SR_CONF_GET | SR_CONF_SET,
+ SR_CONF_SAMPLERATE | SR_CONF_GET | SR_CONF_SET | SR_CONF_LIST,
SR_CONF_TRIGGER_MATCH | SR_CONF_LIST,
SR_CONF_CAPTURE_RATIO | SR_CONF_GET | SR_CONF_SET,
SR_CONF_NUM_LOGIC_CHANNELS | SR_CONF_GET,
/* Default non-zero values (if any) */
devc->fd = -1;
- devc->limit_samples = (uint64_t)-1;
+ devc->limit_samples = (uint64_t)10000000;
devc->tcp_buffer = 0;
return devc;
goto err_free;
if (beaglelogic_tcp_detect(devc) != SR_OK)
goto err_free;
+ if (devc->beaglelogic->close(devc) != SR_OK)
+ goto err_free;
sr_info("BeagleLogic device found at %s : %s",
devc->address, devc->port);
}
err_free:
g_free(sdi->model);
g_free(sdi->version);
+ g_free(devc->address);
+ g_free(devc->port);
g_free(devc);
g_free(sdi);
struct dev_context *devc = sdi->priv;
/* Open BeagleLogic */
- if (devc->beaglelogic == &beaglelogic_native_ops)
- if (devc->beaglelogic->open(devc))
- return SR_ERR;
+ if (devc->beaglelogic->open(devc))
+ return SR_ERR;
/* Set fd and local attributes */
if (devc->beaglelogic == &beaglelogic_tcp_ops)
devc->beaglelogic->munmap(devc);
devc->beaglelogic->close(devc);
+ return SR_OK;
+}
+
+static void clear_helper(struct dev_context *devc)
+{
if (devc->tcp_buffer)
g_free(devc->tcp_buffer);
- return SR_OK;
+ if (devc->address)
+ g_free(devc->address);
+
+ if (devc->port)
+ g_free(devc->port);
+}
+
+static int dev_clear(const struct sr_dev_driver *di)
+{
+ return std_dev_clear_with_callback(di, (std_dev_clear_callback)clear_helper);
}
static int config_get(uint32_t key, GVariant **data,
.cleanup = std_cleanup,
.scan = scan,
.dev_list = std_dev_list,
- .dev_clear = std_dev_clear,
+ .dev_clear = dev_clear,
.config_get = config_get,
.config_set = config_set,
.config_list = config_list,