X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fzeroplus-logic-cube%2Fapi.c;h=2ff8cc932ef70f73dd8c21a494569ff5db6b3cfa;hb=61c39f54bbcae7bdde86ddb11b2fd0ff308d319b;hp=bd94315426a6a770590290ea78635d43b0c07994;hpb=8111446ae005bb4feb8859dd2cd12f46ec4d6050;p=libsigrok.git diff --git a/hardware/zeroplus-logic-cube/api.c b/hardware/zeroplus-logic-cube/api.c index bd943154..2ff8cc93 100644 --- a/hardware/zeroplus-logic-cube/api.c +++ b/hardware/zeroplus-logic-cube/api.c @@ -45,11 +45,10 @@ static const struct zp_model zeroplus_models[] = { {0x0c12, 0x7002, "LAP-16128U", 16, 128, 200}, {0x0c12, 0x7009, "LAP-C(16064)", 16, 64, 100}, {0x0c12, 0x700a, "LAP-C(16128)", 16, 128, 200}, - /* TODO: We don't know anything about these. - {0x0c12, 0x700b, "LAP-C(32128)", 32, 128, 200}, - {0x0c12, 0x700c, "LAP-C(321000)", 32, 1024, 200}, - {0x0c12, 0x700d, "LAP-C(322000)", 32, 2048, 200}, - */ + /* We don't yet support 32 probes */ + {0x0c12, 0x700b, "LAP-C(32128)", 16, 128, 200}, + {0x0c12, 0x700c, "LAP-C(321000)", 16, 1024, 200}, + {0x0c12, 0x700d, "LAP-C(322000)", 16, 2048, 200}, {0x0c12, 0x700e, "LAP-C(16032)", 16, 32, 100}, {0x0c12, 0x7016, "LAP-C(162000)", 16, 2048, 200}, { 0, 0, 0, 0, 0, 0 } @@ -120,7 +119,7 @@ const uint64_t samplerates_200[] = { SR_MHZ(200), }; -static int hw_dev_close(struct sr_dev_inst *sdi); +static int dev_close(struct sr_dev_inst *sdi); #if 0 static int configure_probes(const struct sr_dev_inst *sdi) @@ -238,17 +237,17 @@ SR_PRIV int zp_set_samplerate(struct dev_context *devc, uint64_t samplerate) return SR_OK; } -static int clear_instances(void) +static int dev_clear(void) { return std_dev_clear(di, NULL); } -static int hw_init(struct sr_context *sr_ctx) +static int init(struct sr_context *sr_ctx) { - return std_hw_init(sr_ctx, di, "zeroplus: "); + return std_init(sr_ctx, di, LOG_PREFIX); } -static GSList *hw_scan(GSList *options) +static GSList *scan(GSList *options) { struct sr_dev_inst *sdi; struct sr_probe *probe; @@ -308,10 +307,10 @@ static GSList *hw_scan(GSList *options) devc->prof = prof; devc->num_channels = prof->channels; #ifdef ZP_EXPERIMENTAL - devc->max_memory_size = 128 * 1024; + devc->max_sample_depth = 128 * 1024; devc->max_samplerate = 200; #else - devc->max_memory_size = prof->sample_depth * 1024; + devc->max_sample_depth = prof->sample_depth * 1024; devc->max_samplerate = prof->max_sampling_freq; #endif devc->max_samplerate *= SR_MHZ(1); @@ -340,12 +339,12 @@ static GSList *hw_scan(GSList *options) return devices; } -static GSList *hw_dev_list(void) +static GSList *dev_list(void) { return ((struct drv_context *)(di->priv))->instances; } -static int hw_dev_open(struct sr_dev_inst *sdi) +static int dev_open(struct sr_dev_inst *sdi) { struct dev_context *devc; struct drv_context *drvc; @@ -442,7 +441,7 @@ static int hw_dev_open(struct sr_dev_inst *sdi) return SR_OK; } -static int hw_dev_close(struct sr_dev_inst *sdi) +static int dev_close(struct sr_dev_inst *sdi) { struct sr_usb_dev_inst *usb; @@ -462,15 +461,18 @@ static int hw_dev_close(struct sr_dev_inst *sdi) return SR_OK; } -static int hw_cleanup(void) +static int cleanup(void) { - return clear_instances(); + return dev_clear(); } -static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi) +static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi, + const struct sr_probe_group *probe_group) { struct dev_context *devc; + (void)probe_group; + switch (id) { case SR_CONF_SAMPLERATE: if (sdi) { @@ -488,10 +490,13 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi) return SR_OK; } -static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi) +static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi, + const struct sr_probe_group *probe_group) { struct dev_context *devc; + (void)probe_group; + if (sdi->status != SR_ST_ACTIVE) return SR_ERR_DEV_CLOSED; @@ -514,12 +519,15 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi) return SR_OK; } -static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi) +static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi, + const struct sr_probe_group *probe_group) { struct dev_context *devc; GVariant *gvar; GVariantBuilder gvb; + (void)probe_group; + switch (key) { case SR_CONF_DEVICE_OPTIONS: *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32, @@ -554,7 +562,7 @@ static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi) return SR_OK; } -static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, +static int dev_acquisition_start(const struct sr_dev_inst *sdi, void *cb_data) { struct dev_context *devc; @@ -609,8 +617,8 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, analyzer_read_start(usb->devhdl); /* Send the incoming transfer to the session bus. */ n = get_memory_size(devc->memory_size); - if (devc->max_memory_size * 4 < n) - n = devc->max_memory_size * 4; + if (devc->max_sample_depth * 4 < n) + n = devc->max_sample_depth * 4; for (packet_num = 0; packet_num < n / PACKET_SIZE; packet_num++) { res = analyzer_read_data(usb->devhdl, buf, PACKET_SIZE); sr_info("Tried to read %d bytes, actually read %d bytes.", @@ -634,7 +642,7 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, } /* TODO: This stops acquisition on ALL devices, ignoring dev_index. */ -static int hw_dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) +static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) { struct dev_context *devc; struct sr_usb_dev_inst *usb; @@ -659,17 +667,17 @@ SR_PRIV struct sr_dev_driver zeroplus_logic_cube_driver_info = { .name = "zeroplus-logic-cube", .longname = "ZEROPLUS Logic Cube LAP-C series", .api_version = 1, - .init = hw_init, - .cleanup = hw_cleanup, - .scan = hw_scan, - .dev_list = hw_dev_list, - .dev_clear = hw_cleanup, + .init = init, + .cleanup = cleanup, + .scan = scan, + .dev_list = dev_list, + .dev_clear = dev_clear, .config_get = config_get, .config_set = config_set, .config_list = config_list, - .dev_open = hw_dev_open, - .dev_close = hw_dev_close, - .dev_acquisition_start = hw_dev_acquisition_start, - .dev_acquisition_stop = hw_dev_acquisition_stop, + .dev_open = dev_open, + .dev_close = dev_close, + .dev_acquisition_start = dev_acquisition_start, + .dev_acquisition_stop = dev_acquisition_stop, .priv = NULL, };