]> sigrok.org Git - sigrok-cli.git/blobdiff - sigrok-cli.c
More GVariant conversions
[sigrok-cli.git] / sigrok-cli.c
index 8cfdb8e97ee4a7e0c63464c2df3ad6e791cc93af..d21ae1c8da159ed293715720c1bae2425be91e4c 100644 (file)
@@ -461,11 +461,11 @@ static void show_dev_detail(void)
                                continue;
                        }
                        printf(" - supported time bases:\n");
-                       int32 = g_variant_get_fixed_array(gvar_list,
-                                       &num_elements, sizeof(int32_t));
+                       int64 = g_variant_get_fixed_array(gvar_list,
+                                       &num_elements, sizeof(uint64_t));
                        for (i = 0; i < num_elements / 2; i++)
                                printf("      %s\n", sr_period_string(
-                                               int32[i * 2] * int32[i * 2 + 1]));
+                                               int64[i * 2] * int64[i * 2 + 1]));
                        g_variant_unref(gvar_list);
 
                } else if (srci->key == SR_CONF_TRIGGER_SOURCE) {
@@ -505,11 +505,11 @@ static void show_dev_detail(void)
                                continue;
                        }
                        printf(" - supported volts/div:\n");
-                       int32 = g_variant_get_fixed_array(gvar_list,
-                                       &num_elements, sizeof(int32_t));
+                       int64 = g_variant_get_fixed_array(gvar_list,
+                                       &num_elements, sizeof(uint64_t));
                        for (i = 0; i < num_elements / 2; i++)
-                               printf("      %s\n", sr_period_string(
-                                               int32[i * 2] * int32[i * 2 + 1]));
+                               printf("      %s\n", sr_voltage_string(
+                                               int64[i * 2], int64[i * 2 + 1]));
                        g_variant_unref(gvar_list);
 
                } else if (srci->key == SR_CONF_COUPLING) {
@@ -1423,11 +1423,10 @@ static int set_dev_options(struct sr_dev_inst *sdi, GHashTable *args)
        GHashTableIter iter;
        gpointer key, value;
        int ret;
-       float tmp_float;
-       uint64_t tmp_u64;
-       struct sr_rational tmp_rat;
+       double tmp_double;
+       uint64_t tmp_u64, p, q;
        gboolean tmp_bool;
-       void *val;
+       GVariant *val, *rational[2];
 
        g_hash_table_iter_init(&iter, args);
        while (g_hash_table_iter_next(&iter, &key, &value)) {
@@ -1447,31 +1446,35 @@ static int set_dev_options(struct sr_dev_inst *sdi, GHashTable *args)
                        ret = sr_parse_sizestring(value, &tmp_u64);
                        if (ret != SR_OK)
                                break;
-                       val = &tmp_u64;
+                       val = g_variant_new_uint64(tmp_u64);
                        break;
                case SR_T_CHAR:
-                       val = value;
+                       val = g_variant_new_string(value);
                        break;
                case SR_T_BOOL:
                        if (!value)
                                tmp_bool = TRUE;
                        else
                                tmp_bool = sr_parse_boolstring(value);
-                       val = &tmp_bool;
+                       val = g_variant_new_boolean(tmp_bool);
                        break;
                case SR_T_FLOAT:
-                       tmp_float = strtof(value, NULL);
-                       val = &tmp_float;
+                       tmp_double = strtof(value, NULL);
+                       val = g_variant_new_double(tmp_double);
                        break;
                case SR_T_RATIONAL_PERIOD:
-                       if ((ret = sr_parse_period(value, &tmp_rat)) != SR_OK)
+                       if ((ret = sr_parse_period(value, &p, &q)) != SR_OK)
                                break;
-                       val = &tmp_rat;
+                       rational[0] = g_variant_new_uint64(p);
+                       rational[1] = g_variant_new_uint64(q);
+                       val = g_variant_new_tuple(rational, 2);
                        break;
                case SR_T_RATIONAL_VOLT:
-                       if ((ret = sr_parse_voltage(value, &tmp_rat)) != SR_OK)
+                       if ((ret = sr_parse_voltage(value, &p, &q)) != SR_OK)
                                break;
-                       val = &tmp_rat;
+                       rational[0] = g_variant_new_uint64(p);
+                       rational[1] = g_variant_new_uint64(q);
+                       val = g_variant_new_tuple(rational, 2);
                        break;
                default:
                        ret = SR_ERR;
@@ -1654,6 +1657,7 @@ static void run_session(void)
                        sr_session_destroy();
                        return;
                }
+               gvar = g_variant_new_uint64(limit_frames);
                if (sr_config_set(sdi, SR_CONF_LIMIT_FRAMES, gvar) != SR_OK) {
                        g_critical("Failed to configure frame limit.");
                        sr_session_destroy();