X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fasix-sigma%2Fasix-sigma.c;h=475da6ca7002a1a36d035ce18fcca298b4ee7630;hb=b5750520bb0e2726ad6248e23f52a854535bc9a2;hp=bb90b41ae507b5e7262864a0c365d0d800f93831;hpb=ea9cfed7a55260ab97f57150b57c42a28c3a85a7;p=libsigrok.git diff --git a/hardware/asix-sigma/asix-sigma.c b/hardware/asix-sigma/asix-sigma.c index bb90b41a..475da6ca 100644 --- a/hardware/asix-sigma/asix-sigma.c +++ b/hardware/asix-sigma/asix-sigma.c @@ -57,8 +57,12 @@ static uint64_t supported_samplerates[] = { 0, }; +/* + * Probe numbers seem to go from 1-16, according to this image: + * http://tools.asix.net/img/sigma_sigmacab_pins_720.jpg + * (the cable has two additional GND pins, and a TI and TO pin) + */ static const char *probe_names[NUM_PROBES + 1] = { - "0", "1", "2", "3", @@ -74,6 +78,7 @@ static const char *probe_names[NUM_PROBES + 1] = { "13", "14", "15", + "16", NULL, }; @@ -118,7 +123,7 @@ static const char *firmware_files[] = { "asix-sigma-phasor.fw", /* Frequency counter */ }; -static int hw_dev_acquisition_stop(int dev_index, gpointer session_data); +static int hw_dev_acquisition_stop(int dev_index, void *cb_data); static int sigma_read(void *buf, size_t size, struct context *ctx) { @@ -706,12 +711,12 @@ static int hw_dev_close(int dev_index) if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) { sr_err("sigma: %s: sdi was NULL", __func__); - return SR_ERR; /* TODO: SR_ERR_ARG? */ + return SR_ERR_BUG; } if (!(ctx = sdi->priv)) { sr_err("sigma: %s: sdi->priv was NULL", __func__); - return SR_ERR; /* TODO: SR_ERR_ARG? */ + return SR_ERR_BUG; } /* TODO */ @@ -874,9 +879,9 @@ static int get_trigger_offset(uint16_t *samples, uint16_t last_sample, */ static int decode_chunk_ts(uint8_t *buf, uint16_t *lastts, uint16_t *lastsample, int triggerpos, - uint16_t limit_chunk, void *session_data) + uint16_t limit_chunk, void *cb_data) { - struct sr_dev_inst *sdi = session_data; + struct sr_dev_inst *sdi = cb_data; struct context *ctx = sdi->priv; uint16_t tsdiff, ts; uint16_t samples[65536 * ctx->samples_per_event]; @@ -930,7 +935,7 @@ static int decode_chunk_ts(uint8_t *buf, uint16_t *lastts, logic.length = tosend * sizeof(uint16_t); logic.unitsize = 2; logic.data = samples + sent; - sr_session_bus(ctx->session_id, &packet); + sr_session_send(ctx->session_dev_id, &packet); sent += tosend; } @@ -973,7 +978,7 @@ static int decode_chunk_ts(uint8_t *buf, uint16_t *lastts, logic.length = tosend * sizeof(uint16_t); logic.unitsize = 2; logic.data = samples; - sr_session_bus(ctx->session_id, &packet); + sr_session_send(ctx->session_dev_id, &packet); sent += tosend; } @@ -981,7 +986,7 @@ static int decode_chunk_ts(uint8_t *buf, uint16_t *lastts, /* Only send trigger if explicitly enabled. */ if (ctx->use_triggers) { packet.type = SR_DF_TRIGGER; - sr_session_bus(ctx->session_id, &packet); + sr_session_send(ctx->session_dev_id, &packet); } } @@ -994,7 +999,7 @@ static int decode_chunk_ts(uint8_t *buf, uint16_t *lastts, logic.length = tosend * sizeof(uint16_t); logic.unitsize = 2; logic.data = samples + sent; - sr_session_bus(ctx->session_id, &packet); + sr_session_send(ctx->session_dev_id, &packet); } *lastsample = samples[n - 1]; @@ -1003,9 +1008,9 @@ static int decode_chunk_ts(uint8_t *buf, uint16_t *lastts, return SR_OK; } -static int receive_data(int fd, int revents, void *session_data) +static int receive_data(int fd, int revents, void *cb_data) { - struct sr_dev_inst *sdi = session_data; + struct sr_dev_inst *sdi = cb_data; struct context *ctx = sdi->priv; struct sr_datafeed_packet packet; const int chunks_per_read = 32; @@ -1032,14 +1037,14 @@ static int receive_data(int fd, int revents, void *session_data) if (running_msec < ctx->limit_msec && numchunks < 32767) return FALSE; - hw_dev_acquisition_stop(sdi->index, session_data); + hw_dev_acquisition_stop(sdi->index, sdi); return FALSE; } else if (ctx->state.state == SIGMA_DOWNLOAD) { if (ctx->state.chunks_downloaded >= numchunks) { /* End of samples. */ packet.type = SR_DF_END; - sr_session_bus(ctx->session_id, &packet); + sr_session_send(ctx->session_dev_id, &packet); ctx->state.state = SIGMA_IDLE; @@ -1078,12 +1083,12 @@ static int receive_data(int fd, int revents, void *session_data) &ctx->state.lastts, &ctx->state.lastsample, ctx->state.triggerpos & 0x1ff, - limit_chunk, session_data); + limit_chunk, sdi); else decode_chunk_ts(buf + (i * CHUNK_SIZE), &ctx->state.lastts, &ctx->state.lastsample, - -1, limit_chunk, session_data); + -1, limit_chunk, sdi); ++ctx->state.chunks_downloaded; } @@ -1249,7 +1254,7 @@ static int build_basic_trigger(struct triggerlut *lut, struct context *ctx) return SR_OK; } -static int hw_dev_acquisition_start(int dev_index, gpointer session_data) +static int hw_dev_acquisition_start(int dev_index, void *cb_data) { struct sr_dev_inst *sdi; struct context *ctx; @@ -1261,9 +1266,6 @@ static int hw_dev_acquisition_start(int dev_index, gpointer session_data) struct triggerinout triggerinout_conf; struct triggerlut lut; - /* Avoid compiler warnings. */ - (void)session_data; - if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) return SR_ERR; @@ -1347,7 +1349,7 @@ static int hw_dev_acquisition_start(int dev_index, gpointer session_data) gettimeofday(&ctx->start_tv, 0); sigma_set_register(WRITE_MODE, 0x0d, ctx); - ctx->session_id = session_data; + ctx->session_dev_id = cb_data; /* Send header packet to the session bus. */ packet.type = SR_DF_HEADER; @@ -1356,7 +1358,7 @@ static int hw_dev_acquisition_start(int dev_index, gpointer session_data) gettimeofday(&header.starttime, NULL); header.samplerate = ctx->cur_samplerate; header.num_logic_probes = ctx->num_probes; - sr_session_bus(session_data, &packet); + sr_session_send(ctx->session_dev_id, &packet); /* Add capture source. */ sr_source_add(0, G_IO_IN, 10, receive_data, sdi); @@ -1366,14 +1368,14 @@ static int hw_dev_acquisition_start(int dev_index, gpointer session_data) return SR_OK; } -static int hw_dev_acquisition_stop(int dev_index, gpointer session_data) +static int hw_dev_acquisition_stop(int dev_index, void *cb_data) { struct sr_dev_inst *sdi; struct context *ctx; uint8_t modestatus; /* Avoid compiler warnings. */ - (void)session_data; + (void)cb_data; if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) { sr_err("sigma: %s: sdi was NULL", __func__); @@ -1408,7 +1410,7 @@ static int hw_dev_acquisition_stop(int dev_index, gpointer session_data) return SR_OK; } -SR_PRIV struct sr_dev_plugin asix_sigma_plugin_info = { +SR_PRIV struct sr_dev_driver asix_sigma_driver_info = { .name = "asix-sigma", .longname = "ASIX SIGMA", .api_version = 1,