X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fzeroplus-logic-cube%2Fapi.c;h=c85a40892b69a297317d67c6267bfe0552c3f4d9;hb=c50805d59ce85e00ef263c0a1edad2487bb8a9fe;hp=48845c7a2c26b62f37f4bbc23d834d0420b8fc37;hpb=0f34cb472368be61aa2e7bc9d9d1b25bb28aa560;p=libsigrok.git
diff --git a/src/hardware/zeroplus-logic-cube/api.c b/src/hardware/zeroplus-logic-cube/api.c
index 48845c7a..c85a4089 100644
--- a/src/hardware/zeroplus-logic-cube/api.c
+++ b/src/hardware/zeroplus-logic-cube/api.c
@@ -17,6 +17,7 @@
* along with this program. If not, see .
*/
+#include
#include "protocol.h"
#define VENDOR_NAME "ZEROPLUS"
@@ -30,7 +31,7 @@
struct zp_model {
uint16_t vid;
uint16_t pid;
- char *model_name;
+ const char *model_name;
unsigned int channels;
unsigned int sample_depth; /* In Ksamples/channel */
unsigned int max_sampling_freq;
@@ -50,7 +51,7 @@ static const struct zp_model zeroplus_models[] = {
{0x0c12, 0x700e, "LAP-C(16032)", 16, 32, 100},
{0x0c12, 0x7016, "LAP-C(162000)", 16, 2048, 200},
{0x0c12, 0x7100, "AKIP-9101", 16, 256, 200},
- { 0, 0, 0, 0, 0, 0 }
+ ALL_ZERO
};
static const uint32_t devopts[] = {
@@ -174,7 +175,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
(void)options;
- drvc = di->priv;
+ drvc = di->context;
devices = NULL;
@@ -182,12 +183,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
libusb_get_device_list(drvc->sr_ctx->libusb_ctx, &devlist); /* TODO: Errors. */
for (i = 0; devlist[i]; i++) {
- ret = libusb_get_device_descriptor(devlist[i], &des);
- if (ret != 0) {
- sr_err("Failed to get device descriptor: %s.",
- libusb_error_name(ret));
- continue;
- }
+ libusb_get_device_descriptor(devlist[i], &des);
if ((ret = libusb_open(devlist[i], &hdl)) < 0)
continue;
@@ -262,7 +258,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
static GSList *dev_list(const struct sr_dev_driver *di)
{
- return ((struct drv_context *)(di->priv))->instances;
+ return ((struct drv_context *)(di->context))->instances;
}
static int dev_open(struct sr_dev_inst *sdi)
@@ -275,7 +271,7 @@ static int dev_open(struct sr_dev_inst *sdi)
int device_count, ret, i;
char connection_id[64];
- drvc = di->priv;
+ drvc = di->context;
usb = sdi->conn;
if (!(devc = sdi->priv)) {
@@ -516,8 +512,7 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst *
return SR_OK;
}
-static int dev_acquisition_start(const struct sr_dev_inst *sdi,
- void *cb_data)
+static int dev_acquisition_start(const struct sr_dev_inst *sdi)
{
struct dev_context *devc;
struct sr_usb_dev_inst *usb;
@@ -542,10 +537,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi,
if (sdi->status != SR_ST_ACTIVE)
return SR_ERR_DEV_CLOSED;
- if (!(devc = sdi->priv)) {
- sr_err("%s: sdi->priv was NULL", __func__);
- return SR_ERR_ARG;
- }
+ devc = sdi->priv;
if (analyzer_add_triggers(sdi) != SR_OK) {
sr_err("Failed to configure triggers.");
@@ -582,20 +574,15 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi,
sr_info("Ramsize trigger = 0x%x.", ramsize_trigger);
sr_info("Memory size = 0x%x.", memory_size);
- /* Send header packet to the session bus. */
- std_session_send_df_header(cb_data, LOG_PREFIX);
+ std_session_send_df_header(sdi, LOG_PREFIX);
/* Check for empty capture */
if ((status & STATUS_READY) && !stop_address) {
- packet.type = SR_DF_END;
- sr_session_send(cb_data, &packet);
+ std_session_send_df_end(sdi, LOG_PREFIX);
return SR_OK;
}
- if (!(buf = g_try_malloc(PACKET_SIZE))) {
- sr_err("Packet buffer malloc failed.");
- return SR_ERR_MALLOC;
- }
+ buf = g_malloc(PACKET_SIZE);
/* Check if the trigger is in the samples we are throwing away */
trigger_now = now_address == trigger_address ||
@@ -674,7 +661,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi,
logic.length = (trigger_offset - samples_read) * 4;
logic.unitsize = 4;
logic.data = buf + buf_offset;
- sr_session_send(cb_data, &packet);
+ sr_session_send(sdi, &packet);
len -= logic.length;
samples_read += logic.length / 4;
buf_offset += logic.length;
@@ -684,7 +671,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi,
/* Send out trigger */
packet.type = SR_DF_TRIGGER;
packet.payload = NULL;
- sr_session_send(cb_data, &packet);
+ sr_session_send(sdi, &packet);
}
/* Send out data (or data after trigger) */
@@ -693,32 +680,23 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi,
logic.length = len;
logic.unitsize = 4;
logic.data = buf + buf_offset;
- sr_session_send(cb_data, &packet);
+ sr_session_send(sdi, &packet);
samples_read += len / 4;
}
analyzer_read_stop(usb->devhdl);
g_free(buf);
- packet.type = SR_DF_END;
- sr_session_send(cb_data, &packet);
+ std_session_send_df_end(sdi, LOG_PREFIX);
return SR_OK;
}
/* TODO: This stops acquisition on ALL devices, ignoring dev_index. */
-static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data)
+static int dev_acquisition_stop(struct sr_dev_inst *sdi)
{
- struct dev_context *devc;
struct sr_usb_dev_inst *usb;
- struct sr_datafeed_packet packet;
-
- packet.type = SR_DF_END;
- sr_session_send(cb_data, &packet);
- if (!(devc = sdi->priv)) {
- sr_err("%s: sdi->priv was NULL", __func__);
- return SR_ERR_BUG;
- }
+ std_session_send_df_end(sdi, LOG_PREFIX);
usb = sdi->conn;
analyzer_reset(usb->devhdl);
@@ -743,5 +721,5 @@ SR_PRIV struct sr_dev_driver zeroplus_logic_cube_driver_info = {
.dev_close = dev_close,
.dev_acquisition_start = dev_acquisition_start,
.dev_acquisition_stop = dev_acquisition_stop,
- .priv = NULL,
+ .context = NULL,
};