]> sigrok.org Git - libsigrok.git/blobdiff - hardware/saleae-logic16/protocol.c
Add struct sr_session parameter to all session source backends.
[libsigrok.git] / hardware / saleae-logic16 / protocol.c
index 8b430d90c01e91e5d62ce2c87af853faaa19376f..785833432749f2f71f772a841699197e5d56da41 100644 (file)
@@ -576,16 +576,19 @@ SR_PRIV int logic16_init_device(const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static void finish_acquisition(struct dev_context *devc)
+static void finish_acquisition(struct sr_dev_inst *sdi)
 {
        struct sr_datafeed_packet packet;
+       struct dev_context *devc;
+
+       devc = sdi->priv;
 
        /* Terminate session. */
        packet.type = SR_DF_END;
        sr_session_send(devc->cb_data, &packet);
 
        /* Remove fds from polling. */
-       usb_source_remove(devc->ctx);
+       usb_source_remove(sdi->session, devc->ctx);
 
        devc->num_transfers = 0;
        g_free(devc->transfers);
@@ -598,10 +601,12 @@ static void finish_acquisition(struct dev_context *devc)
 
 static void free_transfer(struct libusb_transfer *transfer)
 {
+       struct sr_dev_inst *sdi;
        struct dev_context *devc;
        unsigned int i;
 
-       devc = transfer->user_data;
+       sdi = transfer->user_data;
+       devc = sdi->priv;
 
        g_free(transfer->buffer);
        transfer->buffer = NULL;
@@ -616,7 +621,7 @@ static void free_transfer(struct libusb_transfer *transfer)
 
        devc->submitted_transfers--;
        if (devc->submitted_transfers == 0)
-               finish_acquisition(devc);
+               finish_acquisition(sdi);
 }
 
 static void resubmit_transfer(struct libusb_transfer *transfer)
@@ -679,11 +684,13 @@ SR_PRIV void logic16_receive_transfer(struct libusb_transfer *transfer)
        gboolean packet_has_error = FALSE;
        struct sr_datafeed_packet packet;
        struct sr_datafeed_logic logic;
+       struct sr_dev_inst *sdi;
        struct dev_context *devc;
        size_t new_samples, num_samples;
        int trigger_offset;
 
-       devc = transfer->user_data;
+       sdi = transfer->user_data;
+       devc = sdi->priv;
 
        /*
         * If acquisition has already ended, just free any queued up