]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/hantek-6xxx/api.c
Factor out std_session_send_df_end() helper.
[libsigrok.git] / src / hardware / hantek-6xxx / api.c
index beace1dae6d9fdd4fee9aa5d62ced0b7e6bb19dc..83992ff64f4f1490452b3491a59289c0de9600d3 100644 (file)
@@ -60,7 +60,7 @@ static const struct hantek_6xxx_profile dev_profiles[] = {
                "Hantek", "6022BE", "hantek-6022be.fw",
        },
        {
-               0x8102, 0x8102, 0x04b5, 0x6022,
+               0x8102, 0x8102, 0x1D50, 0x608E,
                "Sainsmart", "DDS120", "sainsmart-dds120.fw",
        },
        ALL_ZERO
@@ -155,6 +155,7 @@ static void clear_dev_context(void *priv)
 
        devc = priv;
        g_slist_free(devc->enabled_channels);
+       g_free(devc);
 }
 
 static int dev_clear(const struct sr_dev_driver *di)
@@ -650,6 +651,8 @@ static void LIBUSB_CALL receive_transfer(struct libusb_transfer *transfer)
        devc = sdi->priv;
 
        if (devc->dev_state == FLUSH) {
+               g_free(transfer->buffer);
+               libusb_free_transfer(transfer);
                devc->dev_state = CAPTURE;
                devc->aq_started = g_get_monotonic_time();
                read_channel(sdi, data_amount(sdi));
@@ -729,7 +732,6 @@ static int read_channel(const struct sr_dev_inst *sdi, uint32_t amount)
 static int handle_event(int fd, int revents, void *cb_data)
 {
        const struct sr_dev_inst *sdi;
-       struct sr_datafeed_packet packet;
        struct timeval tv;
        struct sr_dev_driver *di;
        struct dev_context *devc;
@@ -758,9 +760,7 @@ static int handle_event(int fd, int revents, void *cb_data)
                 */
                usb_source_remove(sdi->session, drvc->sr_ctx);
 
-               packet.type = SR_DF_END;
-               packet.payload = NULL;
-               sr_session_send(sdi, &packet);
+               std_session_send_df_end(sdi, LOG_PREFIX);
 
                devc->dev_state = IDLE;