]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/ikalogic-scanalogic2/protocol.c
Backport recent changes from mainline.
[libsigrok.git] / src / hardware / ikalogic-scanalogic2 / protocol.c
index f8833806dda30973a8ba63535402d9f46ff4b5f1..b1a85b03a621110d64a16c4397d2f01f1524be7f 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;
-
-       devc = sdi->priv;
 
-       /* Remove USB file descriptors from polling. */
        usb_source_remove(sdi->session, drvc->sr_ctx);
 
-       std_session_send_df_end(devc->cb_data, LOG_PREFIX);
+       std_session_send_df_end(sdi);
 
        sdi->status = SR_ST_ACTIVE;
 }
@@ -42,16 +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;
-
-       devc = sdi->priv;
 
-       /* Remove USB file descriptors from polling. */
        usb_source_remove(sdi->session, drvc->sr_ctx);
 
-       std_session_send_df_end(devc->cb_data, LOG_PREFIX);
+       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)
@@ -134,7 +124,7 @@ static void process_sample_data(const struct sr_dev_inst *sdi)
                        if (devc->trigger_type != TRIGGER_TYPE_NONE &&
                                        devc->pre_trigger_samples == 0) {
                                packet.type = SR_DF_TRIGGER;
-                               sr_session_send(devc->cb_data, &packet);
+                               sr_session_send(sdi, &packet);
                        }
                }
 
@@ -172,10 +162,10 @@ 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);
+                               sr_session_send(sdi, &packet);
 
                                n = 0;
                        }
@@ -188,7 +178,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);
        }
 }
 
@@ -541,25 +531,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)
 {
@@ -635,14 +606,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;
@@ -650,10 +621,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);