X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fbrymen-dmm%2Fapi.c;h=f3152e267761aaa8dfaa2b60c7936a3afa84e29c;hb=4afdfd4628e9955af02a3ea619ecdfe469f9a9e2;hp=697959f40d46570ef38722eb6d36517cdc255c57;hpb=601fb67cc4977d7e04e20916bde52147b35df970;p=libsigrok.git diff --git a/hardware/brymen-dmm/api.c b/hardware/brymen-dmm/api.c index 697959f4..f3152e26 100644 --- a/hardware/brymen-dmm/api.c +++ b/hardware/brymen-dmm/api.c @@ -17,12 +17,6 @@ * along with this program. If not, see . */ -#include -#include -#include -#include -#include "libsigrok.h" -#include "libsigrok-internal.h" #include "protocol.h" static const int hwopts[] = { @@ -39,28 +33,19 @@ static const int hwcaps[] = { 0, }; -SR_PRIV struct sr_dev_driver brymen_dmm_driver_info; -static struct sr_dev_driver *di = &brymen_dmm_driver_info; +SR_PRIV struct sr_dev_driver brymen_bm857_driver_info; +static struct sr_dev_driver *di = &brymen_bm857_driver_info; static int hw_init(struct sr_context *sr_ctx) { - struct drv_context *drvc; - - if (!(drvc = g_try_malloc0(sizeof(struct drv_context)))) { - sr_err("Driver context malloc failed."); - return SR_ERR_MALLOC; - } - - drvc->sr_ctx = sr_ctx; - di->priv = drvc; - - return SR_OK; + return std_hw_init(sr_ctx, di, DRIVER_LOG_DOMAIN); } static void free_instance(void *inst) { struct sr_dev_inst *sdi; struct dev_context *devc; + if (!(sdi = inst)) return; if (!(devc = sdi->priv)) @@ -92,11 +77,13 @@ static GSList *brymen_scan(const char *conn, const char *serialcomm) struct sr_serial_dev_inst *serial; GSList *devices; int ret; + uint8_t buf[128]; + size_t len; if (!(serial = sr_serial_dev_inst_new(conn, serialcomm))) return NULL; - if (serial_open(serial, SERIAL_RDWR|SERIAL_NONBLOCK) != SR_OK) + if (serial_open(serial, SERIAL_RDWR | SERIAL_NONBLOCK) != SR_OK) return NULL; sr_info("Probing port %s.", conn); @@ -104,14 +91,12 @@ static GSList *brymen_scan(const char *conn, const char *serialcomm) devices = NULL; /* Request reading */ - if (brymen_packet_request(serial) == -1) { - sr_err("Unable to send command. code: %d.", errno); + if ((ret = brymen_packet_request(serial)) < 0) { + sr_err("Unable to send command: %d.", ret); goto scan_cleanup; } - uint8_t buf[128]; - size_t len = 128; - + len = 128; ret = brymen_stream_detect(serial, buf, &len, brymen_packet_length, brymen_packet_is_valid, 1000, 9600); if (ret != SR_OK) @@ -139,7 +124,6 @@ static GSList *brymen_scan(const char *conn, const char *serialcomm) drvc->instances = g_slist_append(drvc->instances, sdi); devices = g_slist_append(devices, sdi); - scan_cleanup: serial_close(serial); @@ -163,12 +147,12 @@ static GSList *hw_scan(GSList *options) for (l = options; l; l = l->next) { src = l->data; switch (src->key) { - case SR_CONF_CONN: - conn = src->value; - break; - case SR_CONF_SERIALCOMM: - serialcomm = src->value; - break; + case SR_CONF_CONN: + conn = src->value; + break; + case SR_CONF_SERIALCOMM: + serialcomm = src->value; + break; } } if (!conn) { @@ -179,7 +163,7 @@ static GSList *hw_scan(GSList *options) /* Use the provided comm specs. */ devices = brymen_scan(conn, serialcomm); } else { - /* But 9600 8N1 should work all of the time */ + /* But 9600/8n1 should work all of the time. */ devices = brymen_scan(conn, "9600/8n1/dtr=1/rts=1"); } @@ -188,11 +172,7 @@ static GSList *hw_scan(GSList *options) static GSList *hw_dev_list(void) { - struct drv_context *drvc; - - drvc = di->priv; - - return drvc->instances; + return ((struct drv_context *)(di->priv))->instances; } static int hw_dev_open(struct sr_dev_inst *sdi) @@ -216,10 +196,7 @@ static int hw_dev_close(struct sr_dev_inst *sdi) { struct dev_context *devc; - if (!(devc = sdi->priv)) { - sr_err("sdi->priv was NULL."); - return SR_ERR_BUG; - } + devc = sdi->priv; if (devc->serial && devc->serial->fd != -1) { serial_close(devc->serial); @@ -242,12 +219,12 @@ static int config_list(int key, const void **data, (void)sdi; switch (key) { - case SR_CONF_SCAN_OPTIONS: - *data = hwopts; - break; - case SR_CONF_DEVICE_OPTIONS: - *data = hwcaps; - break; + case SR_CONF_SCAN_OPTIONS: + *data = hwopts; + break; + case SR_CONF_DEVICE_OPTIONS: + *data = hwcaps; + break; default: sr_err("Unknown config key: %d.", key); return SR_ERR_ARG; @@ -274,11 +251,11 @@ static int hw_dev_config_set(int id, const void *value, ret = SR_OK; switch (id) { - case SR_CONF_LIMIT_SAMPLES: - devc->limit_samples = *(const uint64_t*)value; + case SR_CONF_LIMIT_SAMPLES: + devc->limit_samples = *(const uint64_t *)value; break; - case SR_CONF_LIMIT_MSEC: - devc->limit_msec = *(const uint64_t*)value; + case SR_CONF_LIMIT_MSEC: + devc->limit_msec = *(const uint64_t *)value; break; default: sr_err("Unknown hardware capability: %d.", id); @@ -291,8 +268,6 @@ static int hw_dev_config_set(int id, const void *value, 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 dev_context *devc; if (!(devc = sdi->priv)) { @@ -300,8 +275,6 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, return SR_ERR_BUG; } - sr_dbg("Starting acquisition."); - devc->cb_data = cb_data; /* @@ -313,12 +286,7 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi, devc->starttime = g_get_monotonic_time(); /* Send header packet to the session bus. */ - sr_dbg("Sending SR_DF_HEADER."); - packet.type = SR_DF_HEADER; - packet.payload = &header; - header.feed_version = 1; - gettimeofday(&header.starttime, NULL); - sr_session_send(devc->cb_data, &packet); + std_session_send_df_header(cb_data, DRIVER_LOG_DOMAIN); /* Poll every 50ms, or whenever some data comes in. */ sr_source_add(devc->serial->fd, G_IO_IN, 50, @@ -355,9 +323,9 @@ static int hw_dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) return SR_OK; } -SR_PRIV struct sr_dev_driver brymen_dmm_driver_info = { - .name = "brymen-dmm", - .longname = "Brymen BM850 series", +SR_PRIV struct sr_dev_driver brymen_bm857_driver_info = { + .name = "brymen-bm857", + .longname = "Brymen BM857", .api_version = 1, .init = hw_init, .cleanup = hw_cleanup,