sr/drivers: change driver dev_acquisition_start/_stop calls to use sdi

This commit is contained in:
Bert Vermeulen 2012-07-21 22:41:58 +02:00
parent 25a0f108f4
commit 3ffb6964a1
8 changed files with 49 additions and 86 deletions

View File

@ -123,7 +123,8 @@ static const char *firmware_files[] = {
"asix-sigma-phasor.fw", /* Frequency counter */
};
static int hw_dev_acquisition_stop(int dev_index, void *cb_data);
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data);
static int sigma_read(void *buf, size_t size, struct context *ctx)
{
@ -1053,7 +1054,7 @@ static int receive_data(int fd, int revents, void *cb_data)
if (running_msec < ctx->limit_msec && numchunks < 32767)
return TRUE; /* While capturing... */
else
hw_dev_acquisition_stop(sdi->index, sdi);
hw_dev_acquisition_stop(sdi, sdi);
} else if (ctx->state.state == SIGMA_DOWNLOAD) {
if (ctx->state.chunks_downloaded >= numchunks) {
@ -1269,9 +1270,9 @@ static int build_basic_trigger(struct triggerlut *lut, struct context *ctx)
return SR_OK;
}
static int hw_dev_acquisition_start(int dev_index, void *cb_data)
static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_dev_inst *sdi;
struct context *ctx;
struct sr_datafeed_packet *packet;
struct sr_datafeed_header *header;
@ -1282,9 +1283,6 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
struct triggerinout triggerinout_conf;
struct triggerlut lut;
if (!(sdi = sr_dev_inst_get(adi->instances, dev_index)))
return SR_ERR;
ctx = sdi->priv;
/* If the samplerate has not been set, default to 200 kHz. */
@ -1392,7 +1390,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
sr_session_send(ctx->session_dev_id, packet);
/* Add capture source. */
sr_source_add(0, G_IO_IN, 10, receive_data, sdi);
sr_source_add(0, G_IO_IN, 10, receive_data, (void *)sdi);
g_free(header);
g_free(packet);
@ -1402,20 +1400,15 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
return SR_OK;
}
static int hw_dev_acquisition_stop(int dev_index, void *cb_data)
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_dev_inst *sdi;
struct context *ctx;
uint8_t modestatus;
/* Avoid compiler warnings. */
(void)cb_data;
if (!(sdi = sr_dev_inst_get(adi->instances, dev_index))) {
sr_err("sigma: %s: sdi was NULL", __func__);
return SR_ERR_BUG;
}
if (!(ctx = sdi->priv)) {
sr_err("sigma: %s: sdi->priv was NULL", __func__);
return SR_ERR_BUG;

View File

@ -38,7 +38,8 @@ static const uint16_t usb_pids[] = {
};
/* Function prototypes. */
static int hw_dev_acquisition_stop(int dev_index, void *cb_data);
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data);
static void clear_instances(void)
{
@ -396,7 +397,7 @@ static int receive_data(int fd, int revents, void *cb_data)
/* Get one block of data. */
if ((ret = la8_read_block(ctx)) < 0) {
sr_err("la8: %s: la8_read_block error: %d", __func__, ret);
hw_dev_acquisition_stop(sdi->index, sdi);
hw_dev_acquisition_stop(sdi, sdi);
return FALSE;
}
@ -412,15 +413,15 @@ static int receive_data(int fd, int revents, void *cb_data)
for (i = 0; i < NUM_BLOCKS; i++)
send_block_to_session_bus(ctx, i);
hw_dev_acquisition_stop(sdi->index, sdi);
hw_dev_acquisition_stop(sdi, sdi);
// return FALSE; /* FIXME? */
return TRUE;
}
static int hw_dev_acquisition_start(int dev_index, void *cb_data)
static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_dev_inst *sdi;
struct context *ctx;
struct sr_datafeed_packet packet;
struct sr_datafeed_header header;
@ -428,11 +429,6 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
uint8_t buf[4];
int bytes_written;
if (!(sdi = sr_dev_inst_get(cdi->instances, dev_index))) {
sr_err("la8: %s: sdi was NULL", __func__);
return SR_ERR_BUG;
}
if (!(ctx = sdi->priv)) {
sr_err("la8: %s: sdi->priv was NULL", __func__);
return SR_ERR_BUG;
@ -494,24 +490,19 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
ctx->trigger_found = 0;
/* Hook up a dummy handler to receive data from the LA8. */
sr_source_add(-1, G_IO_IN, 0, receive_data, sdi);
sr_source_add(-1, G_IO_IN, 0, receive_data, (void *)sdi);
return SR_OK;
}
static int hw_dev_acquisition_stop(int dev_index, void *cb_data)
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_dev_inst *sdi;
struct context *ctx;
struct sr_datafeed_packet packet;
sr_dbg("la8: Stopping acquisition.");
if (!(sdi = sr_dev_inst_get(cdi->instances, dev_index))) {
sr_err("la8: %s: sdi was NULL", __func__);
return SR_ERR_BUG;
}
if (!(ctx = sdi->priv)) {
sr_err("la8: %s: sdi->priv was NULL", __func__);
return SR_ERR_BUG;

View File

@ -71,7 +71,6 @@ struct context {
uint8_t sample_generator;
uint8_t thread_running;
uint64_t samples_counter;
int dev_index;
void *session_dev_id;
GTimer *timer;
};
@ -139,7 +138,8 @@ static int default_pattern = PATTERN_SIGROK;
static GThread *my_thread;
static int thread_running;
static int hw_dev_acquisition_stop(int dev_index, void *cb_data);
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data);
static int hw_init(void)
{
@ -419,13 +419,16 @@ static int receive_data(int fd, int revents, void *cb_data)
return TRUE;
}
static int hw_dev_acquisition_start(int dev_index, void *cb_data)
static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_datafeed_packet *packet;
struct sr_datafeed_header *header;
struct sr_datafeed_meta_logic meta;
struct context *ctx;
(void)sdi;
/* TODO: 'ctx' is never g_free()'d? */
if (!(ctx = g_try_malloc(sizeof(struct context)))) {
sr_err("demo: %s: ctx malloc failed", __func__);
@ -434,7 +437,6 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
ctx->sample_generator = default_pattern;
ctx->session_dev_id = cb_data;
ctx->dev_index = dev_index;
ctx->samples_counter = 0;
if (pipe(ctx->pipe_fds)) {
@ -500,11 +502,11 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
return SR_OK;
}
/* TODO: This stops acquisition on ALL devices, ignoring dev_index. */
static int hw_dev_acquisition_stop(int dev_index, void *cb_data)
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data)
{
/* Avoid compiler warnings. */
(void)dev_index;
(void)sdi;
(void)cb_data;
/* Stop generate thread. */

View File

@ -146,7 +146,8 @@ static struct sr_dev_driver *fdi = &fx2lafw_driver_info;
static int hw_dev_close(struct sr_dev_inst *sdi);
static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap,
const void *value);
static int hw_dev_acquisition_stop(int dev_index, void *cb_data);
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data);
/**
* Check the USB configuration to determine if this is an fx2lafw device.
@ -928,9 +929,9 @@ static unsigned int get_timeout(struct context *ctx)
return timeout + timeout / 4; /* Leave a headroom of 25% percent */
}
static int hw_dev_acquisition_start(int dev_index, void *cb_data)
static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_dev_inst *sdi;
struct sr_datafeed_packet packet;
struct sr_datafeed_header header;
struct sr_datafeed_meta_logic meta;
@ -941,10 +942,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
int ret;
unsigned char *buf;
if (!(sdi = sr_dev_inst_get(fdi->instances, dev_index)))
return SR_ERR;
ctx = sdi->priv;
if (ctx->submitted_transfers != 0)
return SR_ERR;
@ -1010,16 +1008,13 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
}
/* TODO: This stops acquisition on ALL devices, ignoring dev_index. */
static int hw_dev_acquisition_stop(int dev_index, void *cb_data)
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_dev_inst *sdi;
/* Avoid compiler warnings. */
(void)cb_data;
if (!(sdi = sr_dev_inst_get(fdi->instances, dev_index)))
return SR_ERR;
abort_acquisition(sdi->priv);
return SR_OK;

View File

@ -536,19 +536,14 @@ static int receive_data(int fd, int revents, void *cb_data)
return TRUE;
}
static int hw_dev_acquisition_start(int dev_index, void *cb_data)
static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_datafeed_packet packet;
struct sr_datafeed_header header;
struct sr_datafeed_meta_analog meta;
struct sr_dev_inst *sdi;
struct context *ctx;
if (!(sdi = sr_dev_inst_get(gdi->instances, dev_index))) {
sr_err("genericdmm: sdi was NULL.");
return SR_ERR_BUG;
}
if (!(ctx = sdi->priv)) {
sr_err("genericdmm: sdi->priv was NULL.");
return SR_ERR_BUG;
@ -587,12 +582,13 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
return SR_OK;
}
static int hw_dev_acquisition_stop(int dev_index, void *cb_data)
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_datafeed_packet packet;
/* Avoid compiler warnings. */
(void)dev_index;
(void)sdi;
sr_dbg("genericdmm: Stopping acquisition.");

View File

@ -787,19 +787,16 @@ static int handle_event(int fd, int revents, void *cb_data)
return TRUE;
}
static int hw_dev_acquisition_start(int dev_index, void *cb_data)
static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
void *cb_data)
{
const struct libusb_pollfd **lupfd;
struct sr_datafeed_packet packet;
struct sr_datafeed_header header;
struct sr_datafeed_meta_analog meta;
struct sr_dev_inst *sdi;
struct context *ctx;
int i;
if (!(sdi = sr_dev_inst_get(hdi->instances, dev_index)))
return SR_ERR;
if (sdi->status != SR_ST_ACTIVE)
return SR_ERR;
@ -838,15 +835,12 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
/* TODO: doesn't really cancel pending transfers so they might come in after
* SR_DF_END is sent.
*/
static int hw_dev_acquisition_stop(int dev_index, void *cb_data)
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_datafeed_packet packet;
struct sr_dev_inst *sdi;
struct context *ctx;
if (!(sdi = sr_dev_inst_get(hdi->instances, dev_index)))
return SR_ERR;
if (sdi->status != SR_ST_ACTIVE)
return SR_ERR;

View File

@ -609,9 +609,9 @@ static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap,
}
}
static int hw_dev_acquisition_start(int dev_index, void *cb_data)
static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_dev_inst *sdi;
struct sr_datafeed_packet packet;
struct sr_datafeed_logic logic;
struct sr_datafeed_header header;
@ -622,11 +622,6 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
unsigned char *buf;
struct context *ctx;
if (!(sdi = sr_dev_inst_get(zdi->instances, dev_index))) {
sr_err("zp: %s: sdi was NULL", __func__);
return SR_ERR;
}
if (!(ctx = sdi->priv)) {
sr_err("zp: %s: sdi->priv was NULL", __func__);
return SR_ERR_ARG;
@ -691,20 +686,15 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
}
/* TODO: This stops acquisition on ALL devices, ignoring dev_index. */
static int hw_dev_acquisition_stop(int dev_index, void *cb_data)
static int hw_dev_acquisition_stop(const struct sr_dev_inst *sdi,
void *cb_data)
{
struct sr_datafeed_packet packet;
struct sr_dev_inst *sdi;
struct context *ctx;
packet.type = SR_DF_END;
sr_session_send(cb_data, &packet);
if (!(sdi = sr_dev_inst_get(zdi->instances, dev_index))) {
sr_err("zp: %s: sdi was NULL", __func__);
return SR_ERR_BUG;
}
if (!(ctx = sdi->priv)) {
sr_err("zp: %s: sdi->priv was NULL", __func__);
return SR_ERR_BUG;

View File

@ -499,8 +499,10 @@ struct sr_dev_driver {
int (*dev_status_get) (int dev_index);
int (*dev_config_set) (const struct sr_dev_inst *sdi, int hwcap,
const void *value);
int (*dev_acquisition_start) (int dev_index, void *session_dev_id);
int (*dev_acquisition_stop) (int dev_index, void *session_dev_id);
int (*dev_acquisition_start) (const struct sr_dev_inst *sdi,
void *cb_data);
int (*dev_acquisition_stop) (const struct sr_dev_inst *sdi,
void *cb_data);
/* Dynamic */
GSList *instances;