]> sigrok.org Git - libsigrok.git/blobdiff - hardware/asix-sigma/asix-sigma.c
sr: add new driver API call: scan()
[libsigrok.git] / hardware / asix-sigma / asix-sigma.c
index e5bd550520111fcf4147df7cbb27641051d87bbc..097a56489437cde00c3b164c9bf4adbb60527cdd 100644 (file)
@@ -27,8 +27,8 @@
 #include <glib/gstdio.h>
 #include <ftdi.h>
 #include <string.h>
-#include "sigrok.h"
-#include "sigrok-internal.h"
+#include "libsigrok.h"
+#include "libsigrok-internal.h"
 #include "asix-sigma.h"
 
 #define USB_VENDOR                     0xa600
@@ -42,7 +42,7 @@
 
 static GSList *dev_insts = NULL;
 
-static uint64_t supported_samplerates[] = {
+static const uint64_t supported_samplerates[] = {
        SR_KHZ(200),
        SR_KHZ(250),
        SR_KHZ(500),
@@ -81,7 +81,7 @@ static const char *probe_names[NUM_PROBES + 1] = {
        NULL,
 };
 
-static struct sr_samplerates samplerates = {
+static const struct sr_samplerates samplerates = {
        0,
        0,
        0,
@@ -405,7 +405,15 @@ static int bin2bitbang(const char *filename,
        return SR_OK;
 }
 
-static int hw_init(const char *devinfo)
+static int hw_init(void)
+{
+
+       /* Nothing to do. */
+
+       return SR_OK;
+}
+
+static int hw_scan(void)
 {
        struct sr_dev_inst *sdi;
        struct context *ctx;
@@ -413,9 +421,6 @@ static int hw_init(const char *devinfo)
        char serial_txt[10];
        uint32_t serial;
 
-       /* Avoid compiler warnings. */
-       (void)devinfo;
-
        if (!(ctx = g_try_malloc(sizeof(struct context)))) {
                sr_err("sigma: %s: ctx malloc failed", __func__);
                return SR_ERR_MALLOC;
@@ -633,11 +638,11 @@ static int set_samplerate(struct sr_dev_inst *sdi, uint64_t samplerate)
  * The Sigma supports complex triggers using boolean expressions, but this
  * has not been implemented yet.
  */
-static int configure_probes(struct sr_dev_inst *sdi, GSList *probes)
+static int configure_probes(struct sr_dev_inst *sdi, const GSList *probes)
 {
        struct context *ctx = sdi->priv;
-       struct sr_probe *probe;
-       GSList *l;
+       const struct sr_probe *probe;
+       const GSList *l;
        int trigger_set = 0;
        int probebit;
 
@@ -753,11 +758,11 @@ static int hw_cleanup(void)
        return ret;
 }
 
-static void *hw_dev_info_get(int dev_index, int dev_info_id)
+static const void *hw_dev_info_get(int dev_index, int dev_info_id)
 {
        struct sr_dev_inst *sdi;
        struct context *ctx;
-       void *info = NULL;
+       const void *info = NULL;
 
        if (!(sdi = sr_dev_inst_get(dev_insts, dev_index))) {
                sr_err("sigma: %s: sdi was NULL", __func__);
@@ -806,7 +811,7 @@ static const int *hw_hwcap_get_all(void)
        return hwcaps;
 }
 
-static int hw_dev_config_set(int dev_index, int hwcap, void *value)
+static int hw_dev_config_set(int dev_index, int hwcap, const void *value)
 {
        struct sr_dev_inst *sdi;
        struct context *ctx;
@@ -818,17 +823,17 @@ static int hw_dev_config_set(int dev_index, int hwcap, void *value)
        ctx = sdi->priv;
 
        if (hwcap == SR_HWCAP_SAMPLERATE) {
-               ret = set_samplerate(sdi, *(uint64_t *)value);
+               ret = set_samplerate(sdi, *(const uint64_t *)value);
        } else if (hwcap == SR_HWCAP_PROBECONFIG) {
                ret = configure_probes(sdi, value);
        } else if (hwcap == SR_HWCAP_LIMIT_MSEC) {
-               ctx->limit_msec = *(uint64_t *)value;
+               ctx->limit_msec = *(const uint64_t *)value;
                if (ctx->limit_msec > 0)
                        ret = SR_OK;
                else
                        ret = SR_ERR;
        } else if (hwcap == SR_HWCAP_CAPTURE_RATIO) {
-               ctx->capture_ratio = *(uint64_t *)value;
+               ctx->capture_ratio = *(const uint64_t *)value;
                if (ctx->capture_ratio < 0 || ctx->capture_ratio > 100)
                        ret = SR_ERR;
                else
@@ -1440,6 +1445,7 @@ SR_PRIV struct sr_dev_driver asix_sigma_driver_info = {
        .api_version = 1,
        .init = hw_init,
        .cleanup = hw_cleanup,
+       .scan = hw_scan,
        .dev_open = hw_dev_open,
        .dev_close = hw_dev_close,
        .dev_info_get = hw_dev_info_get,