SR_TRIGGER_FALLING,
};
-static void clear_helper(void *priv)
+static void clear_helper(struct dev_context *devc)
{
- struct dev_context *devc;
-
- devc = priv;
-
ftdi_free(devc->ftdic);
g_free(devc->final_buf);
}
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 add_device(int model, struct libusb_device_descriptor *des,
ret, ftdi_get_error_string(devc->ftdic));
goto err_ftdi_free;
}
- sr_dbg("Device opened successfully.");
/* Purge RX/TX buffers in the FTDI chip. */
if ((ret = ftdi_usb_purge_buffers(devc->ftdic)) < 0) {
ret, ftdi_get_error_string(devc->ftdic));
goto err_ftdi_free;
}
- sr_dbg("FTDI buffers purged successfully.");
/* Enable flow control in the FTDI chip. */
if ((ret = ftdi_setflowctrl(devc->ftdic, SIO_RTS_CTS_HS)) < 0) {
ret, ftdi_get_error_string(devc->ftdic));
goto err_ftdi_free;
}
- sr_dbg("FTDI flow control enabled successfully.");
/* Wait 100ms. */
g_usleep(100 * 1000);
- sdi->status = SR_ST_ACTIVE;
-
- if (ret == SR_OK)
- return SR_OK;
+ return SR_OK;
err_ftdi_free:
ftdi_free(devc->ftdic); /* Close device (if open), free FTDI context. */
devc->ftdic = NULL;
- return ret;
+ return SR_ERR;
}
static int dev_close(struct sr_dev_inst *sdi)
devc = sdi->priv;
- if (devc->ftdic && (ret = ftdi_usb_close(devc->ftdic)) < 0)
+ if (!devc->ftdic)
+ return SR_ERR_BUG;
+
+ if ((ret = ftdi_usb_close(devc->ftdic)) < 0)
sr_err("Failed to close FTDI device (%d): %s.",
ret, ftdi_get_error_string(devc->ftdic));
- sdi->status = SR_ST_INACTIVE;
-
- return SR_OK;
+ return (ret == 0) ? SR_OK : SR_ERR;
}
static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi,
return SR_ERR;
}
- sr_dbg("Hardware acquisition started successfully.");
-
std_session_send_df_header(sdi);
/* Time when we should be done (for detecting trigger timeouts). */