]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/ikalogic-scanalogic2/protocol.c
Factor out std_session_send_df_end() helper.
[libsigrok.git] / src / hardware / ikalogic-scanalogic2 / protocol.c
index 663ff527a75c42c2851448a3dd716cd983393489..f8833806dda30973a8ba63535402d9f46ff4b5f1 100644 (file)
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <config.h>
 #include "protocol.h"
 
 extern struct sr_dev_driver ikalogic_scanalogic2_driver_info;
-static struct sr_dev_driver *di = &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->priv;
+       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(devc->cb_data, LOG_PREFIX);
 
        sdi->status = SR_ST_ACTIVE;
 }
 
 static void abort_acquisition(struct sr_dev_inst *sdi)
 {
-       struct drv_context *drvc = sdi->driver->priv;
+       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(devc->cb_data, LOG_PREFIX);
 
        sdi->driver->dev_close(sdi);
 }
@@ -199,6 +195,7 @@ static void process_sample_data(const struct sr_dev_inst *sdi)
 SR_PRIV int ikalogic_scanalogic2_receive_data(int fd, int revents, void *cb_data)
 {
        struct sr_dev_inst *sdi;
+       struct sr_dev_driver *di;
        struct dev_context *devc;
        struct drv_context *drvc;
        struct timeval tv;
@@ -214,7 +211,8 @@ SR_PRIV int ikalogic_scanalogic2_receive_data(int fd, int revents, void *cb_data
        if (!(devc = sdi->priv))
                return TRUE;
 
-       drvc = di->priv;
+       di = sdi->driver;
+       drvc = di->context;
        current_time = g_get_monotonic_time();
 
        if (devc->state == STATE_WAIT_DATA_READY &&
@@ -257,7 +255,7 @@ SR_PRIV int ikalogic_scanalogic2_receive_data(int fd, int revents, void *cb_data
        return TRUE;
 }
 
-SR_PRIV void sl2_receive_transfer_in( struct libusb_transfer *transfer)
+SR_PRIV void LIBUSB_CALL sl2_receive_transfer_in( struct libusb_transfer *transfer)
 {
        struct sr_dev_inst *sdi;
        struct dev_context *devc;
@@ -268,7 +266,8 @@ SR_PRIV void sl2_receive_transfer_in( struct libusb_transfer *transfer)
        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;
        }
@@ -388,7 +387,7 @@ SR_PRIV void sl2_receive_transfer_in( struct libusb_transfer *transfer)
        }
 }
 
-SR_PRIV void sl2_receive_transfer_out( struct libusb_transfer *transfer)
+SR_PRIV void LIBUSB_CALL sl2_receive_transfer_out( struct libusb_transfer *transfer)
 {
        struct sr_dev_inst *sdi;
        struct dev_context *devc;
@@ -398,7 +397,8 @@ SR_PRIV void sl2_receive_transfer_out( struct libusb_transfer *transfer)
        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;
        }
@@ -642,7 +642,7 @@ SR_PRIV int sl2_get_device_info(struct sr_usb_dev_inst usb,
        uint8_t buffer[PACKET_LENGTH];
        int ret;
 
-       drvc = di->priv;
+       drvc = ikalogic_scanalogic2_driver_info.context;
 
        if (!dev_info)
                return SR_ERR_ARG;
@@ -753,12 +753,12 @@ SR_PRIV int sl2_transfer_in(libusb_device_handle *dev_handle, uint8_t *data)
 {
        return libusb_control_transfer(dev_handle, USB_REQUEST_TYPE_IN,
                USB_HID_GET_REPORT, USB_HID_REPORT_TYPE_FEATURE, USB_INTERFACE,
-               (unsigned char *)data, PACKET_LENGTH, USB_TIMEOUT);
+               (unsigned char *)data, PACKET_LENGTH, USB_TIMEOUT_MS);
 }
 
 SR_PRIV int sl2_transfer_out(libusb_device_handle *dev_handle, uint8_t *data)
 {
        return libusb_control_transfer(dev_handle, USB_REQUEST_TYPE_OUT,
                USB_HID_SET_REPORT, USB_HID_REPORT_TYPE_FEATURE, USB_INTERFACE,
-               (unsigned char *)data, PACKET_LENGTH, USB_TIMEOUT);
+               (unsigned char *)data, PACKET_LENGTH, USB_TIMEOUT_MS);
 }