]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/ikalogic-scanalogic2/protocol.c
uni-t-ut181a: silence compiler warning, use of uninitialized variable
[libsigrok.git] / src / hardware / ikalogic-scanalogic2 / protocol.c
index 6db7026115faa0b31164ee9676986fcf8bd60938..f4ceb67ab4b26b2f1ea569c7682c357cddb9b219 100644 (file)
 #include <config.h>
 #include "protocol.h"
 
-extern struct sr_dev_driver ikalogic_scanalogic2_driver_info;
-
 extern uint64_t sl2_samplerates[NUM_SAMPLERATES];
 
 static void stop_acquisition(struct sr_dev_inst *sdi)
 {
        struct drv_context *drvc = sdi->driver->context;
-       struct dev_context *devc;
-       struct sr_datafeed_packet packet;
 
-       devc = sdi->priv;
-
-       /* Remove USB file descriptors from polling. */
        usb_source_remove(sdi->session, drvc->sr_ctx);
 
-       packet.type = SR_DF_END;
-       sr_session_send(devc->cb_data, &packet);
+       std_session_send_df_end(sdi);
 
        sdi->status = SR_ST_ACTIVE;
 }
@@ -44,18 +36,12 @@ static void stop_acquisition(struct sr_dev_inst *sdi)
 static void abort_acquisition(struct sr_dev_inst *sdi)
 {
        struct drv_context *drvc = sdi->driver->context;
-       struct dev_context *devc;
-       struct sr_datafeed_packet packet;
 
-       devc = sdi->priv;
-
-       /* Remove USB file descriptors from polling. */
        usb_source_remove(sdi->session, drvc->sr_ctx);
 
-       packet.type = SR_DF_END;
-       sr_session_send(devc->cb_data, &packet);
+       std_session_send_df_end(sdi);
 
-       sdi->driver->dev_close(sdi);
+       sr_dev_close(sdi);
 }
 
 static void buffer_sample_data(const struct sr_dev_inst *sdi)
@@ -136,10 +122,8 @@ static void process_sample_data(const struct sr_dev_inst *sdi)
                         * through the capture ratio.
                         */
                        if (devc->trigger_type != TRIGGER_TYPE_NONE &&
-                                       devc->pre_trigger_samples == 0) {
-                               packet.type = SR_DF_TRIGGER;
-                               sr_session_send(devc->cb_data, &packet);
-                       }
+                                       devc->pre_trigger_samples == 0)
+                               std_session_send_df_trigger(sdi);
                }
 
                for (; k >= 0; k--) {
@@ -176,10 +160,9 @@ static void process_sample_data(const struct sr_dev_inst *sdi)
                                logic.length = n;
                                logic.unitsize = 1;
                                logic.data = buffer;
-                               sr_session_send(devc->cb_data, &packet);
+                               sr_session_send(sdi, &packet);
 
-                               packet.type = SR_DF_TRIGGER;
-                               sr_session_send(devc->cb_data, &packet);
+                               std_session_send_df_trigger(sdi);
 
                                n = 0;
                        }
@@ -192,7 +175,7 @@ static void process_sample_data(const struct sr_dev_inst *sdi)
                logic.length = n;
                logic.unitsize = 1;
                logic.data = buffer;
-               sr_session_send(devc->cb_data, &packet);
+               sr_session_send(sdi, &packet);
        }
 }
 
@@ -270,7 +253,8 @@ SR_PRIV void LIBUSB_CALL sl2_receive_transfer_in( struct libusb_transfer *transf
        devc = sdi->priv;
 
        if (transfer->status != LIBUSB_TRANSFER_COMPLETED) {
-               sr_err("Transfer to device failed: %i.", transfer->status);
+               sr_err("Transfer to device failed: %s.",
+                       libusb_error_name(transfer->status));
                devc->transfer_error = TRUE;
                return;
        }
@@ -400,7 +384,8 @@ SR_PRIV void LIBUSB_CALL sl2_receive_transfer_out( struct libusb_transfer *trans
        devc = sdi->priv;
 
        if (transfer->status != LIBUSB_TRANSFER_COMPLETED) {
-               sr_err("Transfer to device failed: %i.", transfer->status);
+               sr_err("Transfer to device failed: %s.",
+                       libusb_error_name(transfer->status));
                devc->transfer_error = TRUE;
                return;
        }
@@ -543,25 +528,6 @@ SR_PRIV int sl2_convert_trigger(const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-SR_PRIV int sl2_set_capture_ratio(const struct sr_dev_inst *sdi,
-                                 uint64_t capture_ratio)
-{
-       struct dev_context *devc;
-
-       devc = sdi->priv;
-
-       if (capture_ratio > 100) {
-               sr_err("Invalid capture ratio: %" PRIu64 " %%.", capture_ratio);
-               return SR_ERR_ARG;
-       }
-
-       sr_info("Capture ratio set to %" PRIu64 " %%.", capture_ratio);
-
-       devc->capture_ratio = capture_ratio;
-
-       return SR_OK;
-}
-
 SR_PRIV int sl2_set_after_trigger_delay(const struct sr_dev_inst *sdi,
                                        uint64_t after_trigger_delay)
 {
@@ -637,14 +603,14 @@ SR_PRIV void sl2_calculate_trigger_samples(const struct sr_dev_inst *sdi)
        devc->post_trigger_bytes = post_trigger_bytes;
 }
 
-SR_PRIV int sl2_get_device_info(struct sr_usb_dev_inst usb,
-               struct device_info *dev_info)
+SR_PRIV int sl2_get_device_info(struct sr_dev_driver *di,
+               struct sr_usb_dev_inst usb, struct device_info *dev_info)
 {
        struct drv_context *drvc;
        uint8_t buffer[PACKET_LENGTH];
        int ret;
 
-       drvc = ikalogic_scanalogic2_driver_info.context;
+       drvc = di->context;
 
        if (!dev_info)
                return SR_ERR_ARG;
@@ -652,10 +618,6 @@ SR_PRIV int sl2_get_device_info(struct sr_usb_dev_inst usb,
        if (sr_usb_open(drvc->sr_ctx->libusb_ctx, &usb) != SR_OK)
                return SR_ERR;
 
-       /*
-        * Determine if a kernel driver is active on this interface and, if so,
-        * detach it.
-        */
        if (libusb_kernel_driver_active(usb.devhdl, USB_INTERFACE) == 1) {
                ret = libusb_detach_kernel_driver(usb.devhdl,
                        USB_INTERFACE);