]> sigrok.org Git - libsigrok.git/commitdiff
ols: use new scan API
authorBert Vermeulen <redacted>
Fri, 13 Jul 2012 20:16:37 +0000 (22:16 +0200)
committerBert Vermeulen <redacted>
Fri, 3 Aug 2012 08:27:38 +0000 (10:27 +0200)
hardware/openbench-logic-sniffer/ols.c
hardware/openbench-logic-sniffer/ols.h

index e98a230f59462780955bfbf7687aba5f15ec695b..60131805169b86e9bd71df394f5aa9f2a584f228 100644 (file)
@@ -227,10 +227,11 @@ static struct sr_dev_inst *get_metadata(int fd)
 {
        struct sr_dev_inst *sdi;
        struct context *ctx;
-       uint32_t tmp_int;
+       struct sr_probe *probe;
+       uint32_t tmp_int, ui;
        uint8_t key, type, token;
        GString *tmp_str, *devname, *version;
-       gchar tmp_c;
+       guchar tmp_c;
 
        sdi = sr_dev_inst_new(0, SR_ST_INACTIVE, NULL, NULL, NULL);
        ctx = ols_dev_new();
@@ -289,7 +290,12 @@ static struct sr_dev_inst *get_metadata(int fd)
                        switch (token) {
                        case 0x00:
                                /* Number of usable probes */
-                               ctx->num_probes = tmp_int;
+                               for (ui = 0; ui < tmp_int; ui++) {
+                                       if (!(probe = sr_probe_new(ui, SR_PROBE_LOGIC, TRUE,
+                                                       probe_names[ui])))
+                                               return 0;
+                                       sdi->probes = g_slist_append(sdi->probes, probe);
+                               }
                                break;
                        case 0x01:
                                /* Amount of sample memory available (bytes) */
@@ -322,7 +328,12 @@ static struct sr_dev_inst *get_metadata(int fd)
                        switch (token) {
                        case 0x00:
                                /* Number of usable probes */
-                               ctx->num_probes = tmp_c;
+                               for (ui = 0; ui < tmp_c; ui++) {
+                                       if (!(probe = sr_probe_new(ui, SR_PROBE_LOGIC, TRUE,
+                                                       probe_names[ui])))
+                                               return 0;
+                                       sdi->probes = g_slist_append(sdi->probes, probe);
+                               }
                                break;
                        case 0x01:
                                /* protocol version */
@@ -356,16 +367,19 @@ static int hw_init(void)
        return SR_OK;
 }
 
-static int hw_scan(void)
+static GSList *hw_scan(GSList *options)
 {
        struct sr_dev_inst *sdi;
        struct context *ctx;
-       GSList *ports, *l;
+       struct sr_probe *probe;
+       GSList *devices, *ports, *l;
        GPollFD *fds, probefd;
-       int devcnt, final_devcnt, num_ports, fd, ret, i;
+       int devcnt, final_devcnt, num_ports, fd, ret, i, j;
        char buf[8], **dev_names, **serial_params;
 
+       (void)options;
        final_devcnt = 0;
+       devices = NULL;
 
        /* Scan all serial ports. */
        ports = list_serial_ports();
@@ -455,7 +469,12 @@ static int hw_scan(void)
                        sdi = sr_dev_inst_new(final_devcnt, SR_ST_INACTIVE,
                                        "Sump", "Logic Analyzer", "v1.0");
                        ctx = ols_dev_new();
-                       ctx->num_probes = 32;
+                       for (j = 0; j < 32; j++) {
+                               if (!(probe = sr_probe_new(j, SR_PROBE_LOGIC, TRUE,
+                                               probe_names[j])))
+                                       return 0;
+                               sdi->probes = g_slist_append(sdi->probes, probe);
+                       }
                        sdi->priv = ctx;
                }
                ctx->serial = sr_serial_dev_inst_new(dev_names[i], -1);
@@ -485,7 +504,7 @@ hw_init_free_fds:
 hw_init_free_ports:
        g_slist_free(ports);
 
-       return final_devcnt;
+       return devices;
 }
 
 static int hw_dev_open(int dev_index)
index f452c74846876bb81d5e507b08710fdcb02a3b6f..bf71d54807982889fd73eefadc0dd309468dea2c 100644 (file)
@@ -64,7 +64,6 @@ struct context {
        uint32_t max_samplerate;
        uint32_t max_samples;
        uint32_t protocol_version;
-       int num_probes;
 
        uint64_t cur_samplerate;
        uint32_t cur_samplerate_divider;