X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fasix-sigma%2Fapi.c;h=c9b787e73ac8ac2976468cd81e3982a630931d08;hb=53012da658ae94b245240c8a3e115723eede4c7d;hp=542aadbb16c7df56a4a782ab793a5ebe0eb8a9ca;hpb=6e43c3d5318a8ff320bf6539a9efe7f0b8497e2f;p=libsigrok.git
diff --git a/src/hardware/asix-sigma/api.c b/src/hardware/asix-sigma/api.c
index 542aadbb..c9b787e7 100644
--- a/src/hardware/asix-sigma/api.c
+++ b/src/hardware/asix-sigma/api.c
@@ -19,10 +19,6 @@
* along with this program. If not, see .
*/
-/*
- * ASIX SIGMA/SIGMA2 logic analyzer driver
- */
-
#include
#include "protocol.h"
@@ -59,9 +55,14 @@ static const int32_t trigger_matches[] = {
};
#endif
+static void clear_helper(struct dev_context *devc)
+{
+ ftdi_deinit(&devc->ftdic);
+}
+
static int dev_clear(const struct sr_dev_driver *di)
{
- return std_dev_clear_with_callback(di, sigma_clear_helper);
+ return std_dev_clear_with_callback(di, (std_dev_clear_callback)clear_helper);
}
static GSList *scan(struct sr_dev_driver *di, GSList *options)
@@ -80,8 +81,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
ftdi_init(&devc->ftdic);
- /* Look for SIGMAs. */
-
if ((ret = ftdi_usb_find_all(&devc->ftdic, &devlist,
USB_VENDOR, USB_PRODUCT)) <= 0) {
if (ret < 0)
@@ -111,7 +110,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
devc->capture_ratio = 50;
devc->use_triggers = 0;
- /* Register SIGMA device. */
sdi = g_malloc0(sizeof(struct sr_dev_inst));
sdi->status = SR_ST_INITIALIZING;
sdi->vendor = g_strdup(USB_VENDOR_NAME);
@@ -122,7 +120,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
sdi->priv = devc;
- /* We will open the device again when we need it. */
ftdi_list_free(&devlist);
return std_scan_complete(di, g_slist_append(NULL, sdi));
@@ -238,32 +235,15 @@ static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sd
static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi,
const struct sr_channel_group *cg)
{
- GVariant *gvar;
- GVariantBuilder gvb;
-
- (void)cg;
-
switch (key) {
case SR_CONF_DEVICE_OPTIONS:
- if (!sdi)
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- drvopts, ARRAY_SIZE(drvopts), sizeof(uint32_t));
- else
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
- devopts, ARRAY_SIZE(devopts), sizeof(uint32_t));
- break;
+ return STD_CONFIG_LIST(key, data, sdi, cg, NULL, drvopts, devopts);
case SR_CONF_SAMPLERATE:
- g_variant_builder_init(&gvb, G_VARIANT_TYPE("a{sv}"));
- gvar = g_variant_new_fixed_array(G_VARIANT_TYPE("t"), samplerates,
- samplerates_count, sizeof(samplerates[0]));
- g_variant_builder_add(&gvb, "{sv}", "samplerates", gvar);
- *data = g_variant_builder_end(&gvb);
+ *data = std_gvar_samplerates(samplerates, samplerates_count);
break;
#if ASIX_SIGMA_WITH_TRIGGER
case SR_CONF_TRIGGER_MATCH:
- *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
- trigger_matches, ARRAY_SIZE(trigger_matches),
- sizeof(int32_t));
+ *data = std_gvar_array_i32(ARRAY_AND_SIZE(trigger_matches));
break;
#endif
default: