X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fftdi-la%2Fapi.c;h=27415ae3ec0389a08994497632cbaf6a7f516cb9;hb=a9010323ddf4e479663e871386c05db05ea3522e;hp=22715a1f43dc20480bb0724e624d439550b5b523;hpb=bee2b0168c087676c1b365861d8c2d4714afa9b9;p=libsigrok.git diff --git a/src/hardware/ftdi-la/api.c b/src/hardware/ftdi-la/api.c index 22715a1f..27415ae3 100644 --- a/src/hardware/ftdi-la/api.c +++ b/src/hardware/ftdi-la/api.c @@ -120,7 +120,7 @@ static void scan_device(struct ftdi_context *ftdic, model = g_malloc(32); serial_num = g_malloc(32); rv = ftdi_usb_get_strings(ftdic, dev, vendor, 32, - model, 32, serial_num, 32); + model, 32, serial_num, 32); switch (rv) { case 0: break; @@ -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,23 +376,21 @@ 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, @@ -430,7 +411,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 +420,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 +440,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);