]> sigrok.org Git - libsigrok.git/blobdiff - session_driver.c
hantek-dso: proper protocol implementation of trigger/samplerate setting
[libsigrok.git] / session_driver.c
index 3707b3573ec7dc3a97b1ecaad21d882b37475547..32b8e905fc26a0253fb540e8a5d8550434701014 100644 (file)
@@ -274,7 +274,8 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
        struct session_vdev *vdev;
        struct sr_datafeed_header *header;
        struct sr_datafeed_packet *packet;
-       int err;
+       struct sr_datafeed_meta_logic meta;
+       int ret;
 
        if (!(vdev = get_vdev_by_index(dev_index)))
                return SR_ERR;
@@ -282,9 +283,9 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
        sr_info("session_driver: opening archive %s file %s", sessionfile,
                vdev->capturefile);
 
-       if (!(vdev->archive = zip_open(sessionfile, 0, &err))) {
+       if (!(vdev->archive = zip_open(sessionfile, 0, &ret))) {
                sr_err("session driver: Failed to open session file '%s': "
-                      "zip error %d\n", sessionfile, err);
+                      "zip error %d\n", sessionfile, ret);
                return SR_ERR;
        }
 
@@ -318,9 +319,15 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data)
        packet->payload = (unsigned char *)header;
        header->feed_version = 1;
        gettimeofday(&header->starttime, NULL);
-       header->samplerate = vdev->samplerate;
-       header->num_logic_probes = vdev->num_probes;
        sr_session_send(cb_data, packet);
+
+       /* Send metadata about the SR_DF_LOGIC packets to come. */
+       packet->type = SR_DF_META_LOGIC;
+       packet->payload = &meta;
+       meta.samplerate = vdev->samplerate;
+       meta.num_probes = vdev->num_probes;
+       sr_session_send(cb_data, packet);
+
        g_free(header);
        g_free(packet);