]> sigrok.org Git - libsigrok.git/blobdiff - session_driver.c
sr_driver_scan(): Improve checks.
[libsigrok.git] / session_driver.c
index dfde8d799264f734e8d8c1b0450c294350981b63..f3cd4b6c8b57e3bff710fdb9e7b90ff590ee372e 100644 (file)
@@ -148,16 +148,12 @@ static int hw_dev_open(struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int hw_info_get(int info_id, const void **data,
-       const struct sr_dev_inst *sdi)
+static int config_get(int id, const void **data, const struct sr_dev_inst *sdi)
 {
        struct session_vdev *vdev;
 
-       switch (info_id) {
-       case SR_DI_HWCAPS:
-               *data = hwcaps;
-               break;
-       case SR_DI_CUR_SAMPLERATE:
+       switch (id) {
+       case SR_CONF_SAMPLERATE:
                if (sdi) {
                        vdev = sdi->priv;
                        *data = &vdev->samplerate;
@@ -171,15 +167,14 @@ static int hw_info_get(int info_id, const void **data,
        return SR_OK;
 }
 
-static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap,
-               const void *value)
+static int config_set(int id, const void *value, const struct sr_dev_inst *sdi)
 {
        struct session_vdev *vdev;
        const uint64_t *tmp_u64;
 
        vdev = sdi->priv;
 
-       switch (hwcap) {
+       switch (id) {
        case SR_CONF_SAMPLERATE:
                tmp_u64 = value;
                vdev->samplerate = *tmp_u64;
@@ -202,13 +197,29 @@ static int hw_dev_config_set(const struct sr_dev_inst *sdi, int hwcap,
                vdev->num_probes = *tmp_u64;
                break;
        default:
-               sr_err("Unknown capability: %d.", hwcap);
+               sr_err("Unknown capability: %d.", id);
                return SR_ERR;
        }
 
        return SR_OK;
 }
 
+static int config_list(int key, const void **data, const struct sr_dev_inst *sdi)
+{
+
+       (void)sdi;
+
+       switch (key) {
+       case SR_CONF_DEVICE_OPTIONS:
+               *data = hwcaps;
+               break;
+       default:
+               return SR_ERR_ARG;
+       }
+
+       return SR_OK;
+}
+
 static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
                void *cb_data)
 {
@@ -274,10 +285,11 @@ SR_PRIV struct sr_dev_driver session_driver = {
        .api_version = 1,
        .init = hw_init,
        .cleanup = hw_cleanup,
+       .config_get = config_get,
+       .config_set = config_set,
+       .config_list = config_list,
        .dev_open = hw_dev_open,
        .dev_close = NULL,
-       .info_get = hw_info_get,
-       .dev_config_set = hw_dev_config_set,
        .dev_acquisition_start = hw_dev_acquisition_start,
        .dev_acquisition_stop = NULL,
 };