]> sigrok.org Git - libsigrok.git/blobdiff - input/chronovu_la8.c
demo: don't use deprecated hwcap_get_all() driver API call
[libsigrok.git] / input / chronovu_la8.c
index b9f14dd308b9143be55b6ca6b08837299141a404..681b812df4d03e759b4e61dc0fe6476875eb5119 100644 (file)
@@ -22,8 +22,8 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <sys/stat.h>
-#include "sigrok.h"
-#include "sigrok-internal.h"
+#include "libsigrok.h"
+#include "libsigrok-internal.h"
 
 #define NUM_PACKETS            2048
 #define PACKET_SIZE            4096
@@ -96,15 +96,19 @@ static int init(struct sr_input *in)
 {
        int num_probes, i;
        char name[SR_MAX_PROBENAME_LEN + 1];
-
-       if (in->param && in->param[0]) {
-               num_probes = strtoul(in->param, NULL, 10);
-               if (num_probes < 1) {
-                       sr_err("la8 in: %s: strtoul failed", __func__);
-                       return SR_ERR;
+       char *param;
+
+       num_probes = DEFAULT_NUM_PROBES;
+
+       if (in->param) {
+               param = g_hash_table_lookup(in->param, "numprobes");
+               if (param) {
+                       num_probes = strtoul(param, NULL, 10);
+                       if (num_probes < 1) {
+                               sr_err("la8 in: %s: strtoul failed", __func__);
+                               return SR_ERR;
+                       }
                }
-       } else {
-               num_probes = DEFAULT_NUM_PROBES;
        }
 
        /* Create a virtual device. */
@@ -123,6 +127,7 @@ static int loadfile(struct sr_input *in, const char *filename)
 {
        struct sr_datafeed_header header;
        struct sr_datafeed_packet packet;
+       struct sr_datafeed_meta_logic meta;
        struct sr_datafeed_logic logic;
        uint8_t buf[PACKET_SIZE], divcount;
        int i, fd, size, num_probes;
@@ -153,8 +158,13 @@ static int loadfile(struct sr_input *in, const char *filename)
        packet.payload = &header;
        header.feed_version = 1;
        gettimeofday(&header.starttime, NULL);
-       header.num_logic_probes = num_probes;
-       header.samplerate = samplerate;
+       sr_session_send(in->vdev, &packet);
+
+       /* Send metadata about the SR_DF_LOGIC packets to come. */
+       packet.type = SR_DF_META_LOGIC;
+       packet.payload = &meta;
+       meta.samplerate = samplerate;
+       meta.num_probes = num_probes;
        sr_session_send(in->vdev, &packet);
 
        /* TODO: Handle trigger point. */