]> sigrok.org Git - libsigrok.git/commitdiff
probe_groups: API changes required to implement probe groups.
authorMartin Ling <redacted>
Sat, 20 Apr 2013 00:00:49 +0000 (01:00 +0100)
committerUwe Hermann <redacted>
Fri, 8 Nov 2013 00:03:16 +0000 (01:03 +0100)
28 files changed:
device.c
hardware/agilent-dmm/api.c
hardware/alsa/api.c
hardware/asix-sigma/asix-sigma.c
hardware/brymen-dmm/api.c
hardware/chronovu-la8/api.c
hardware/colead-slm/api.c
hardware/demo/demo.c
hardware/fluke-dmm/api.c
hardware/fx2lafw/api.c
hardware/hantek-dso/api.c
hardware/lascar-el-usb/api.c
hardware/link-mso19/api.c
hardware/mic-985xx/api.c
hardware/openbench-logic-sniffer/api.c
hardware/rigol-ds1xx2/api.c
hardware/serial-dmm/api.c
hardware/tondaj-sl-814/api.c
hardware/uni-t-dmm/api.c
hardware/victor-dmm/api.c
hardware/zeroplus-logic-cube/api.c
hwdriver.c
libsigrok.h
output/ols.c
proto.h
session_driver.c
session_file.c
strutil.c

index b261d6a741b2e93b6a54b958abb532e71361c6a9..29c721f0cc57529c22440a2fc1553dda3fcbf6d9 100644 (file)
--- a/device.c
+++ b/device.c
@@ -208,7 +208,8 @@ SR_API gboolean sr_dev_has_option(const struct sr_dev_inst *sdi, int key)
        if (!sdi || !sdi->driver || !sdi->driver->config_list)
                return FALSE;
 
-       if (sdi->driver->config_list(SR_CONF_DEVICE_OPTIONS, &gvar, NULL) != SR_OK)
+       if (sdi->driver->config_list(SR_CONF_DEVICE_OPTIONS,
+                               &gvar, NULL, NULL) != SR_OK)
                return FALSE;
 
        ret = FALSE;
index 4a1274d6d7885abec0284e47545f6a5310117d34..e67f0e020a78db3ab3b2329eeeeae8481d549fb3 100644 (file)
@@ -200,10 +200,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -235,10 +238,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
-
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index 9bb2ce251ff29e3ce2116aa9c5f1983317b52710..0f54eb48cc228384f6257eeb73ef6a145d59478e 100644 (file)
@@ -128,10 +128,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_SAMPLERATE:
                devc = sdi->priv;
@@ -144,10 +147,13 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -167,13 +173,16 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        GVariant *gvar;
        GVariantBuilder gvb;
        int i;
 
+       (void)probe_group;
+
        switch (key) {
        case SR_CONF_DEVICE_OPTIONS:
                *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
index 52224271d32a689d6c1934d0eaa3cf827d711a9e..70a9d7731d35e50e249c213680b29e8f822fa7ab 100644 (file)
@@ -744,10 +744,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_SAMPLERATE:
                if (sdi) {
@@ -763,11 +766,14 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        int ret;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -794,12 +800,14 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        GVariant *gvar;
        GVariantBuilder gvb;
 
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_DEVICE_OPTIONS:
index 7302243e6a2136f6fd3bbafe3a35ba31a7e5acf7..c03ed668a5b74a1c07596cfdc14aa36b550ee11e 100644 (file)
@@ -180,11 +180,14 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        int ret;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -208,9 +211,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index ec4bf35f03ebc29d44fea57fbb78960bdfdaf97f..a05a7a94f10da3352f99bc941da4c796402e7169 100644 (file)
@@ -262,10 +262,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_SAMPLERATE:
                if (sdi) {
@@ -283,10 +286,13 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -326,12 +332,14 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        GVariant *gvar;
        GVariantBuilder gvb;
 
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_DEVICE_OPTIONS:
index acf0c6eb1c27707bb6bbd68b1e9c444caf38ddfe..98472004e76f63f9920e6ba7374cc41dc7b31635 100644 (file)
@@ -147,10 +147,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -182,10 +185,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
-
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index 68bd4115b5fd60cf60126626d07df1a4f9c7a8b8..b7a07c12a3ad0b44470bf0e80db570fd59666ec8 100644 (file)
@@ -225,10 +225,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *const devc = sdi->priv;
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_SAMPLERATE:
                *data = g_variant_new_uint64(devc->cur_samplerate);
@@ -265,11 +268,13 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        int ret;
        const char *stropt;
 
+       (void)probe_group;
        struct dev_context *const devc = sdi->priv;
 
        if (sdi->status != SR_ST_ACTIVE)
@@ -317,12 +322,14 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        GVariant *gvar;
        GVariantBuilder gvb;
 
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_DEVICE_OPTIONS:
index 4dd49c19c1525466c111f96a4e75f6e92cdf1e90..604d65f4f44aeb7ab5722dcf03bbcc0ae88d60e6 100644 (file)
@@ -233,10 +233,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -268,10 +271,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
-
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index 1fd59627238c96ebdb387eb8eee69027b07a4012..d10b65434f8436615b9d4bf9cb4d18f85ef5e6ad 100644 (file)
@@ -350,12 +350,15 @@ static int cleanup(void)
        return ret;
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        struct sr_usb_dev_inst *usb;
        char str[128];
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_CONN:
                if (!sdi || !sdi->conn)
@@ -381,11 +384,14 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        int ret;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR;
 
@@ -404,12 +410,14 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        GVariant *gvar;
        GVariantBuilder gvb;
 
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index 3a342efcfe9ca511e36d0dcdbfb0508863990ad1..5d09e80ad173b977bba63e489c65d9b5d2fa70ae 100644 (file)
@@ -422,11 +422,14 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct sr_usb_dev_inst *usb;
        char str[128];
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_CONN:
                if (!sdi || !sdi->conn)
@@ -452,7 +455,8 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        double tmp_double;
@@ -462,6 +466,8 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        const char *tmp_str;
        char **targets;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -579,13 +585,16 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        GVariant *tuple, *rational[2];
        GVariantBuilder gvb;
        unsigned int i;
 
+       (void)probe_group;
+
        if (!sdi)
                return SR_ERR_ARG;
 
index 464eb6b1048cc1a922683e3f44c4dead0327b054..b699f2833c79f2a6fdd32ae7ff3473be698ca4dd 100644 (file)
@@ -163,13 +163,16 @@ static int cleanup(void)
        return ret;
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        struct sr_usb_dev_inst *usb;
        int ret;
        char str[128];
 
+       (void)probe_group;
+
        devc = sdi->priv;
        switch (id) {
        case SR_CONF_CONN:
@@ -196,11 +199,14 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        int ret;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -233,10 +239,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
-
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index a22f04a911a39268936944fa3e7093afa8955ae0..6a93ba94b4650a9859d6635bc89846409fb95659 100644 (file)
@@ -291,10 +291,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_SAMPLERATE:
                if (sdi) {
@@ -310,7 +313,8 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        int ret;
        struct dev_context *devc;
@@ -318,6 +322,7 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        int trigger_pos;
        double pos;
 
+       (void)probe_group;
        devc = sdi->priv;
 
        if (sdi->status != SR_ST_ACTIVE)
@@ -376,11 +381,13 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        GVariant *gvar;
        GVariantBuilder gvb;
 
+       (void)probe_group;
        (void)sdi;
 
        switch (key) {
index fa14e2f15a833415a5ec4d0cda901ca909d38322..5785e4eb7837487b5b094d6480ea644edf64b4a0 100644 (file)
@@ -188,10 +188,13 @@ static int cleanup(int idx)
        return dev_clear(idx);
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -215,9 +218,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index 7302860863a50dd899c997195e34f90de3ef4d9f..8a83abc711447843bf432964edf26ca3cd391fae 100644 (file)
@@ -235,10 +235,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (!sdi)
                return SR_ERR_ARG;
 
@@ -269,13 +272,16 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        int ret;
        uint64_t tmp_u64;
        const char *stropt;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -354,12 +360,14 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        GVariant *gvar;
        GVariantBuilder gvb;
 
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index ba59c2156af26c66e7026565617d408c76b6277f..40865950e9545f763b867684148aff055addadc0 100644 (file)
@@ -370,10 +370,12 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
 
        (void)sdi;
+       (void)probe_group;
 
        switch (id) {
        case SR_CONF_NUM_TIMEBASE:
@@ -389,7 +391,8 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        uint64_t tmp_u64, p, q;
@@ -398,6 +401,8 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        int ret;
        const char *tmp_str;
 
+       (void)probe_group;
+
        devc = sdi->priv;
 
        if (sdi->status != SR_ST_ACTIVE)
@@ -497,13 +502,16 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        GVariant *tuple, *rational[2];
        GVariantBuilder gvb;
        unsigned int i;
        struct dev_context *devc;
 
+       (void)probe_group;
+
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
                *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
index daa8a7ca297926a3e2abd3909025b4ee7565ce5f..b394bfa761103dc7b888fc23acc0ce88d4c45993 100644 (file)
@@ -411,10 +411,13 @@ static int cleanup(int dmm)
        return dev_clear(dmm);
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -441,10 +444,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
-
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index 4af876485c8f0e1999eb16fde81b345e66d104b2..bb13e289edab2b441c96e656eb0bd2d8cbb5979c 100644 (file)
@@ -159,10 +159,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -181,10 +184,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
-
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index b23fc02cb3e5791fd22babafc83f67db2d5702c5..84a288b9c9d6207a479746794360d580223592d9 100644 (file)
@@ -229,10 +229,13 @@ static int cleanup(int dmm)
        return dev_clear(dmm);
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        devc = sdi->priv;
 
        switch (id) {
@@ -261,9 +264,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index e50e338104b2617f350120b8b4a03ebc58ffd773..97e5f7bd95cbe180340844a9a1cfa3e72116e0c1 100644 (file)
@@ -205,11 +205,14 @@ static int cleanup(void)
        return ret;
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct sr_usb_dev_inst *usb;
        char str[128];
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_CONN:
                if (!sdi || !sdi->conn)
@@ -225,12 +228,15 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        gint64 now;
        int ret;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -261,10 +267,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return ret;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
-
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
index 637f22ce93f3896cf18e42fa5ede69e48f3cf547..3fb156efba41b72cea4683376004507462c5e372 100644 (file)
@@ -467,10 +467,13 @@ static int cleanup(void)
        return dev_clear();
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_SAMPLERATE:
                if (sdi) {
@@ -488,10 +491,13 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
 
+       (void)probe_group;
+
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
 
@@ -514,12 +520,15 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct dev_context *devc;
        GVariant *gvar;
        GVariantBuilder gvb;
 
+       (void)probe_group;
+
        switch (key) {
        case SR_CONF_DEVICE_OPTIONS:
                *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32,
index ff28465111d7af6fd6561b8d7d3b01f173594a75..8ae5674c32cdcc5c2ae236ab87e73e68ffb59d7c 100644 (file)
@@ -504,8 +504,10 @@ SR_PRIV void sr_config_free(struct sr_config *src)
  *         but this is not to be flagged as an error by the caller; merely
  *         as an indication that it's not applicable.
  */
-SR_API int sr_config_get(const struct sr_dev_driver *driver, int key,
-               GVariant **data, const struct sr_dev_inst *sdi)
+SR_API int sr_config_get(const struct sr_dev_driver *driver,
+               const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group,
+               int key, GVariant **data)
 {
        int ret;
 
@@ -515,7 +517,7 @@ SR_API int sr_config_get(const struct sr_dev_driver *driver, int key,
        if (!driver->config_get)
                return SR_ERR_ARG;
 
-       if ((ret = driver->config_get(key, data, sdi)) == SR_OK) {
+       if ((ret = driver->config_get(key, data, sdi, probe_group)) == SR_OK) {
                /* Got a floating reference from the driver. Sink it here,
                 * caller will need to unref when done with it. */
                g_variant_ref_sink(*data);
@@ -538,7 +540,9 @@ SR_API int sr_config_get(const struct sr_dev_driver *driver, int key,
  *         but this is not to be flagged as an error by the caller; merely
  *         as an indication that it's not applicable.
  */
-SR_API int sr_config_set(const struct sr_dev_inst *sdi, int key, GVariant *data)
+SR_API int sr_config_set(const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group,
+               int key, GVariant *data)
 {
        int ret;
 
@@ -549,7 +553,7 @@ SR_API int sr_config_set(const struct sr_dev_inst *sdi, int key, GVariant *data)
        else if (!sdi->driver->config_set)
                ret = SR_ERR_ARG;
        else
-               ret = sdi->driver->config_set(key, data, sdi);
+               ret = sdi->driver->config_set(key, data, sdi, probe_group);
 
        g_variant_unref(data);
 
@@ -574,8 +578,10 @@ SR_API int sr_config_set(const struct sr_dev_inst *sdi, int key, GVariant *data)
  *         but this is not to be flagged as an error by the caller; merely
  *         as an indication that it's not applicable.
  */
-SR_API int sr_config_list(const struct sr_dev_driver *driver, int key,
-               GVariant **data, const struct sr_dev_inst *sdi)
+SR_API int sr_config_list(const struct sr_dev_driver *driver,
+               const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group,
+               int key, GVariant **data)
 {
        int ret;
 
@@ -583,7 +589,7 @@ SR_API int sr_config_list(const struct sr_dev_driver *driver, int key,
                ret = SR_ERR;
        else if (!driver->config_list)
                ret = SR_ERR_ARG;
-       else if ((ret = driver->config_list(key, data, sdi)) == SR_OK)
+       else if ((ret = driver->config_list(key, data, sdi, probe_group)) == SR_OK)
                g_variant_ref_sink(*data);
 
        return ret;
index 17d7fc17d7a5249dff9d11c585ec95891bb596d9..32b23380bd2cde66bf96913785cd32d1bbd15115 100644 (file)
@@ -549,6 +549,13 @@ struct sr_probe {
        char *trigger;
 };
 
+struct sr_probe_group {
+       /* List of sr_probe structs. */
+       GSList *probes;
+       /* Private data for driver use. */
+       void *data;
+};
+
 struct sr_config {
        int key;
        GVariant *data;
@@ -777,6 +784,8 @@ struct sr_dev_inst {
        char *model;
        char *version;
        GSList *probes;
+       /* List of sr_probe_group structs */
+       GSList *probe_groups;
        void *conn;
        void *priv;
 };
@@ -814,11 +823,14 @@ struct sr_dev_driver {
        GSList *(*dev_list) (void);
        int (*dev_clear) (void);
        int (*config_get) (int id, GVariant **data,
-                       const struct sr_dev_inst *sdi);
+                       const struct sr_dev_inst *sdi,
+                       const struct sr_probe_group *probe_group);
        int (*config_set) (int id, GVariant *data,
-                       const struct sr_dev_inst *sdi);
+                       const struct sr_dev_inst *sdi,
+                       const struct sr_probe_group *probe_group);
        int (*config_list) (int info_id, GVariant **data,
-                       const struct sr_dev_inst *sdi);
+                       const struct sr_dev_inst *sdi,
+                       const struct sr_probe_group *probe_group);
 
        /* Device-specific */
        int (*dev_open) (struct sr_dev_inst *sdi);
index 67de327c0788311a55bd065ebe517256d19570f9..3c6e59413776870154bb33a9dc4d415512349c9d 100644 (file)
@@ -69,8 +69,8 @@ static GString *gen_header(const struct sr_dev_inst *sdi, struct context *ctx)
        GVariant *gvar;
        int num_enabled_probes;
 
-       if (!ctx->samplerate && sr_config_get(sdi->driver, SR_CONF_SAMPLERATE,
-                       &gvar, sdi) == SR_OK) {
+       if (!ctx->samplerate && sr_config_get(sdi->driver, sdi, NULL,
+                       SR_CONF_SAMPLERATE, &gvar) == SR_OK) {
                ctx->samplerate = g_variant_get_uint64(gvar);
                g_variant_unref(gvar);
        }
diff --git a/proto.h b/proto.h
index 2c078a7c366d71b1309dc828c0ffde5c54a26a11..7ec6ae4f16905cdcfeb5fd25b1939d7ff32231d8 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -70,12 +70,17 @@ SR_API struct sr_dev_driver **sr_driver_list(void);
 SR_API int sr_driver_init(struct sr_context *ctx,
                struct sr_dev_driver *driver);
 SR_API GSList *sr_driver_scan(struct sr_dev_driver *driver, GSList *options);
-SR_API int sr_config_get(const struct sr_dev_driver *driver, int key,
-               GVariant **data, const struct sr_dev_inst *sdi);
-SR_API int sr_config_set(const struct sr_dev_inst *sdi, int key,
-               GVariant *data);
-SR_API int sr_config_list(const struct sr_dev_driver *driver, int key,
-               GVariant **data, const struct sr_dev_inst *sdi);
+SR_API int sr_config_get(const struct sr_dev_driver *driver,
+               const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group,
+               int key, GVariant **data);
+SR_API int sr_config_set(const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group,
+               int key, GVariant *data);
+SR_API int sr_config_list(const struct sr_dev_driver *driver,
+               const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group,
+               int key, GVariant **data);
 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);
 
index 8090df9d84a427308bd3c7cc635899686c78862b..b7a10a0f93337457d4bf7994cc12273e87333627 100644 (file)
@@ -202,10 +202,13 @@ static int dev_open(struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct session_vdev *vdev;
 
+       (void)probe_group;
+
        switch (id) {
        case SR_CONF_SAMPLERATE:
                if (sdi) {
@@ -221,10 +224,13 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
+static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
        struct session_vdev *vdev;
 
+       (void)probe_group;
+
        vdev = sdi->priv;
 
        switch (id) {
@@ -253,10 +259,11 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
        return SR_OK;
 }
 
-static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
+static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi,
+               const struct sr_probe_group *probe_group)
 {
-
        (void)sdi;
+       (void)probe_group;
 
        switch (key) {
        case SR_CONF_DEVICE_OPTIONS:
index 6cd9b72025ad54a3146d40c8d1e856963d4fa23e..0e7ad2d8b9befb5995e2b2cedea42019c4f4fe51 100644 (file)
@@ -165,22 +165,22 @@ SR_API int sr_session_load(const char *filename)
                                        sr_dev_open(sdi);
                                        sr_session_dev_add(sdi);
                                        sdi->driver->config_set(SR_CONF_SESSIONFILE,
-                                                       g_variant_new_string(filename), sdi);
+                                                       g_variant_new_string(filename), sdi, NULL);
                                        sdi->driver->config_set(SR_CONF_CAPTUREFILE,
-                                                       g_variant_new_string(val), sdi);
+                                                       g_variant_new_string(val), sdi, NULL);
                                        g_ptr_array_add(capturefiles, val);
                                } else if (!strcmp(keys[j], "samplerate")) {
                                        sr_parse_sizestring(val, &tmp_u64);
                                        sdi->driver->config_set(SR_CONF_SAMPLERATE,
-                                                       g_variant_new_uint64(tmp_u64), sdi);
+                                                       g_variant_new_uint64(tmp_u64), sdi, NULL);
                                } else if (!strcmp(keys[j], "unitsize")) {
                                        tmp_u64 = strtoull(val, NULL, 10);
                                        sdi->driver->config_set(SR_CONF_CAPTURE_UNITSIZE,
-                                                       g_variant_new_uint64(tmp_u64), sdi);
+                                                       g_variant_new_uint64(tmp_u64), sdi, NULL);
                                } else if (!strcmp(keys[j], "total probes")) {
                                        total_probes = strtoull(val, NULL, 10);
                                        sdi->driver->config_set(SR_CONF_CAPTURE_NUM_PROBES,
-                                                       g_variant_new_uint64(total_probes), sdi);
+                                                       g_variant_new_uint64(total_probes), sdi, NULL);
                                        for (p = 0; p < total_probes; p++) {
                                                snprintf(probename, SR_MAX_PROBENAME_LEN, "%" PRIu64, p);
                                                if (!(probe = sr_probe_new(p, SR_PROBE_LOGIC, TRUE,
@@ -279,8 +279,8 @@ SR_API int sr_session_save(const char *filename, const struct sr_dev_inst *sdi,
        fprintf(meta, "unitsize = %d\n", unitsize);
        fprintf(meta, "total probes = %d\n", g_slist_length(sdi->probes));
        if (sr_dev_has_option(sdi, SR_CONF_SAMPLERATE)) {
-               if (sr_config_get(sdi->driver, SR_CONF_SAMPLERATE,
-                               &gvar, sdi) == SR_OK) {
+               if (sr_config_get(sdi->driver, sdi, NULL,
+                                       SR_CONF_SAMPLERATE, &gvar) == SR_OK) {
                        samplerate = g_variant_get_uint64(gvar);
                        s = sr_samplerate_string(samplerate);
                        fprintf(meta, "samplerate = %s\n", s);
index 6cb13a6ac3aa22fb1830dc635d170cc12628c986..f6cdb73b73f81836477378ee3baea38979c4282c 100644 (file)
--- a/strutil.c
+++ b/strutil.c
@@ -230,7 +230,8 @@ SR_API char **sr_parse_triggerstring(const struct sr_dev_inst *sdi,
                return NULL;
        }
 
-       if (sdi->driver->config_list(SR_CONF_TRIGGER_TYPE, &gvar, sdi) != SR_OK) {
+       if (sdi->driver->config_list(SR_CONF_TRIGGER_TYPE,
+                               &gvar, sdi, NULL) != SR_OK) {
                sr_err("%s: Device doesn't support any triggers.", __func__);
                return NULL;
        }