]> sigrok.org Git - libsigrok.git/commitdiff
New driver API function: config_list()
authorBert Vermeulen <redacted>
Fri, 25 Jan 2013 00:24:42 +0000 (01:24 +0100)
committerBert Vermeulen <redacted>
Fri, 25 Jan 2013 00:24:42 +0000 (01:24 +0100)
This takes an sr_config key and returns a list of possible values for
that key to be submitted with config_set(). The format of the list and
its contents is dependent on the key.

This will replace the SR_DI_* keys that returned such a list before,
such as SR_DI_SAMPLERATES.

hwdriver.c
libsigrok.h
proto.h

index 9bb097e80ca260e742008e68ef1e0a5423d4cd64..439d4c78e9ac6ecdf2a4ef1ead932f288febf798 100644 (file)
@@ -329,6 +329,22 @@ SR_API int sr_info_get(struct sr_dev_driver *driver, int id,
        return ret;
 }
 
+SR_API int sr_config_list(struct sr_dev_driver *driver, int id,
+               const void **data, const struct sr_dev_inst *sdi)
+{
+       int ret;
+
+       if (driver == NULL || data == NULL)
+               return SR_ERR;
+
+       if (!driver->config_list)
+               return SR_ERR;
+
+       ret = driver->config_list(id, data, sdi);
+
+       return ret;
+}
+
 /**
  * Find out if a hardware driver has a specific capability.
  *
index 90e5e537aaba8dfc80153733fe9b9ae142878be7..b4d929ef33ccc87adef650f0ef2bc56d5321a488 100644 (file)
@@ -599,6 +599,8 @@ struct sr_dev_driver {
                        const struct sr_dev_inst *sdi);
        int (*config_set) (int id, const void *value,
                        const struct sr_dev_inst *sdi);
+       int (*config_list) (int info_id, const void **data,
+                       const struct sr_dev_inst *sdi);
 
        /* Device-specific */
        int (*dev_open) (struct sr_dev_inst *sdi);
diff --git a/proto.h b/proto.h
index ea74e8fedc90a187d44c2a0c13a463b1b6f1caf1..667b6ecc6ed9f4dbf7d57a39ce1a164ba7f45be9 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -72,6 +72,8 @@ SR_API int sr_driver_init(struct sr_context *ctx,
 SR_API GSList *sr_driver_scan(struct sr_dev_driver *driver, GSList *options);
 SR_API int sr_info_get(struct sr_dev_driver *driver, int id,
                const void **data, const struct sr_dev_inst *sdi);
+SR_API int sr_config_list(struct sr_dev_driver *driver, int id,
+               const void **data, const struct sr_dev_inst *sdi);
 SR_API gboolean sr_driver_hwcap_exists(struct sr_dev_driver *driver, int hwcap);
 SR_API const struct sr_config_info *sr_config_info_get(int key);
 SR_API const struct sr_config_info *sr_config_info_name_get(const char *optname);