X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fftdi-la%2Fapi.c;h=31195e20e77aa1a71e153b0a87bd2e76afd0be1c;hb=e66d1892d0dd16ed166fc8f13493f95de0607362;hp=0927d3a274387d14d1fe1dd34a1377f72a73ee23;hpb=d9251a2c9f1ca4380c27240ccca90c9f9ed46d3f;p=libsigrok.git diff --git a/src/hardware/ftdi-la/api.c b/src/hardware/ftdi-la/api.c index 0927d3a2..31195e20 100644 --- a/src/hardware/ftdi-la/api.c +++ b/src/hardware/ftdi-la/api.c @@ -178,8 +178,6 @@ static GSList *scan_all(struct ftdi_context *ftdic, GSList *options) return NULL; } - sr_dbg("Number of FTDI devices found: %d", ret); - curdev = devlist; while (curdev) { scan_device(ftdic, curdev->dev, &devices); @@ -242,18 +240,14 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) return std_scan_complete(di, devices); } -static void clear_helper(void *priv) +static void clear_helper(struct dev_context *devc) { - struct dev_context *devc; - - devc = priv; g_free(devc->data_buf); - g_free(devc); } static int dev_clear(const struct sr_dev_driver *di) { - return std_dev_clear(di, clear_helper); + return std_dev_clear_with_callback(di, (std_dev_clear_callback)clear_helper); } static int dev_open(struct sr_dev_inst *sdi) @@ -283,7 +277,6 @@ static int dev_open(struct sr_dev_inst *sdi) ret, ftdi_get_error_string(devc->ftdic)); goto err_dev_open_close_ftdic; } - sr_dbg("FTDI chip buffers purged successfully."); /* Reset the FTDI bitmode. */ ret = ftdi_set_bitmode(devc->ftdic, 0x00, BITMODE_RESET); @@ -292,7 +285,6 @@ static int dev_open(struct sr_dev_inst *sdi) ret, ftdi_get_error_string(devc->ftdic)); goto err_dev_open_close_ftdic; } - sr_dbg("FTDI chip bitmode reset successfully."); ret = ftdi_set_bitmode(devc->ftdic, 0x00, BITMODE_BITBANG); if (ret < 0) { @@ -300,15 +292,15 @@ static int dev_open(struct sr_dev_inst *sdi) ret, ftdi_get_error_string(devc->ftdic)); goto err_dev_open_close_ftdic; } - sr_dbg("FTDI chip bitbang mode entered successfully."); - - sdi->status = SR_ST_ACTIVE; return SR_OK; + err_dev_open_close_ftdic: ftdi_usb_close(devc->ftdic); + err_ftdi_free: ftdi_free(devc->ftdic); + return SR_ERR; } @@ -318,13 +310,12 @@ static int dev_close(struct sr_dev_inst *sdi) devc = sdi->priv; - if (devc->ftdic) { - ftdi_usb_close(devc->ftdic); - ftdi_free(devc->ftdic); - devc->ftdic = NULL; - } + if (!devc->ftdic) + return SR_ERR_BUG; - sdi->status = SR_ST_INACTIVE; + ftdi_usb_close(devc->ftdic); + ftdi_free(devc->ftdic); + devc->ftdic = NULL; return SR_OK; } @@ -332,7 +323,6 @@ static int dev_close(struct sr_dev_inst *sdi) static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { - int ret; struct dev_context *devc; struct sr_usb_dev_inst *usb; char str[128]; @@ -341,7 +331,6 @@ static int config_get(uint32_t key, GVariant **data, devc = sdi->priv; - ret = SR_OK; switch (key) { case SR_CONF_SAMPLERATE: *data = g_variant_new_uint64(devc->cur_samplerate); @@ -357,30 +346,24 @@ static int config_get(uint32_t key, GVariant **data, return SR_ERR_NA; } - return ret; + return SR_OK; } static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { - int ret; struct dev_context *devc; uint64_t value; (void)cg; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - devc = sdi->priv; - ret = SR_OK; switch (key) { case SR_CONF_LIMIT_MSEC: value = g_variant_get_uint64(data); /* TODO: Implement. */ - ret = SR_ERR_NA; - break; + return SR_ERR_NA; case SR_CONF_LIMIT_SAMPLES: if (g_variant_get_uint64(data) == 0) return SR_ERR_ARG; @@ -393,32 +376,22 @@ static int config_set(uint32_t key, GVariant *data, devc->cur_samplerate = value; return ftdi_la_set_samplerate(devc); default: - ret = SR_ERR_NA; + return SR_ERR_NA; } - return ret; + return SR_OK; } static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, const struct sr_channel_group *cg) { - int ret; GVariant *gvar; GVariantBuilder gvb; - (void)sdi; - (void)cg; - - ret = SR_OK; switch (key) { case SR_CONF_SCAN_OPTIONS: - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, - scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t)); - break; case SR_CONF_DEVICE_OPTIONS: - *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, scanopts, NULL, 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"), @@ -430,7 +403,7 @@ static int config_list(uint32_t key, GVariant **data, return SR_ERR_NA; } - return ret; + return SR_OK; } static int dev_acquisition_start(const struct sr_dev_inst *sdi) @@ -439,9 +412,6 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) devc = sdi->priv; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - if (!devc->ftdic) return SR_ERR_BUG; @@ -462,10 +432,6 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) static int dev_acquisition_stop(struct sr_dev_inst *sdi) { - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - - sr_dbg("Stopping acquisition."); sr_session_source_remove(sdi->session, -1); std_session_send_df_end(sdi);