X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fchronovu-la%2Fapi.c;h=e8a4afc38d9892078aaa4af4e276f548d912205c;hb=f670835f1fbc03525e995d6970a5495976ab7c1a;hp=329b45bd305148165a68e6b1a647a9002a9c56e8;hpb=e32862ebccac5ae063abc68d9ce13a66ad46bb97;p=libsigrok.git diff --git a/src/hardware/chronovu-la/api.c b/src/hardware/chronovu-la/api.c index 329b45bd..e8a4afc3 100644 --- a/src/hardware/chronovu-la/api.c +++ b/src/hardware/chronovu-la/api.c @@ -14,8 +14,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * along with this program; if not, see . */ #include @@ -44,8 +43,6 @@ static const int32_t trigger_matches[] = { SR_TRIGGER_FALLING, }; -static int dev_acquisition_stop(struct sr_dev_inst *sdi); - static void clear_helper(void *priv) { struct dev_context *devc; @@ -61,20 +58,17 @@ static int dev_clear(const struct sr_dev_driver *di) return std_dev_clear(di, clear_helper); } -static int add_device(struct sr_dev_driver *di, int model, - struct libusb_device_descriptor *des, const char *serial_num, - const char *connection_id, libusb_device *usbdev, GSList **devices) +static int add_device(int model, struct libusb_device_descriptor *des, + const char *serial_num, const char *connection_id, libusb_device *usbdev, + GSList **devices) { int ret; unsigned int i; struct sr_dev_inst *sdi; - struct drv_context *drvc; struct dev_context *devc; ret = SR_OK; - drvc = di->context; - /* Allocate memory for our private device context. */ devc = g_malloc0(sizeof(struct dev_context)); @@ -116,7 +110,6 @@ static int add_device(struct sr_dev_driver *di, int model, sdi->connection_id = g_strdup(connection_id); sdi->conn = sr_usb_dev_inst_new(libusb_get_bus_number(usbdev), libusb_get_device_address(usbdev), NULL); - sdi->driver = di; sdi->priv = devc; for (i = 0; i < devc->prof->num_channels; i++) @@ -124,7 +117,6 @@ static int add_device(struct sr_dev_driver *di, int model, cv_channel_names[i]); *devices = g_slist_append(*devices, sdi); - drvc->instances = g_slist_append(drvc->instances, sdi); if (ret == SR_OK) return SR_OK; @@ -149,7 +141,6 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) char product[64], serial_num[64], connection_id[64]; drvc = di->context; - drvc->instances = NULL; conn = NULL; for (l = options; l; l = l->next) { @@ -225,7 +216,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) libusb_get_bus_number(devlist[i]), libusb_get_device_address(devlist[i]), connection_id); - if ((ret = add_device(di, model, &des, serial_num, connection_id, + if ((ret = add_device(model, &des, serial_num, connection_id, devlist[i], &devices)) < 0) { sr_dbg("Failed to add device: %d.", ret); } @@ -234,7 +225,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) libusb_free_device_list(devlist, 1); g_slist_free_full(conn_devices, (GDestroyNotify)sr_usb_dev_inst_free); - return devices; + return std_scan_complete(di, devices); } static int dev_open(struct sr_dev_inst *sdi) @@ -459,7 +450,7 @@ static int receive_data(int fd, int revents, void *cb_data) /* Get one block of data. */ if ((ret = cv_read_block(devc)) < 0) { sr_err("Failed to read data block: %d.", ret); - dev_acquisition_stop(sdi); + sr_dev_acquisition_stop(sdi); return FALSE; } @@ -482,7 +473,7 @@ static int receive_data(int fd, int revents, void *cb_data) for (i = 0; i < NUM_BLOCKS; i++) cv_send_block_to_session_bus(sdi, i); - dev_acquisition_stop(sdi); + sr_dev_acquisition_stop(sdi); return TRUE; } @@ -493,9 +484,6 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) uint8_t buf[8]; int bytes_to_write, bytes_written; - if (sdi->status != SR_ST_ACTIVE) - return SR_ERR_DEV_CLOSED; - devc = sdi->priv; if (!devc->ftdic) { @@ -543,7 +531,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) sr_dbg("Hardware acquisition started successfully."); - std_session_send_df_header(sdi, LOG_PREFIX); + std_session_send_df_header(sdi); /* Time when we should be done (for detecting trigger timeouts). */ devc->done = (devc->divcount + 1) * devc->prof->trigger_constant + @@ -559,14 +547,13 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi) static int dev_acquisition_stop(struct sr_dev_inst *sdi) { - sr_dbg("Stopping acquisition."); sr_session_source_remove(sdi->session, -1); - std_session_send_df_end(sdi, LOG_PREFIX); + std_session_send_df_end(sdi); return SR_OK; } -SR_PRIV struct sr_dev_driver chronovu_la_driver_info = { +static struct sr_dev_driver chronovu_la_driver_info = { .name = "chronovu-la", .longname = "ChronoVu LA8/LA16", .api_version = 1, @@ -584,3 +571,4 @@ SR_PRIV struct sr_dev_driver chronovu_la_driver_info = { .dev_acquisition_stop = dev_acquisition_stop, .context = NULL, }; +SR_REGISTER_DEV_DRIVER(chronovu_la_driver_info);