aboutsummaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/mmcli-modem-signal.c88
1 files changed, 12 insertions, 76 deletions
diff --git a/cli/mmcli-modem-signal.c b/cli/mmcli-modem-signal.c
index 5237938a..7d1e2ff6 100644
--- a/cli/mmcli-modem-signal.c
+++ b/cli/mmcli-modem-signal.c
@@ -274,71 +274,6 @@ print_signal_info (void)
mmcli_output_dump ();
}
-typedef struct {
- guint rssi_threshold;
- gboolean rssi_set;
- gboolean error_rate_threshold;
- gboolean error_rate_set;
- GError *error;
-} ParseKeyValueContext;
-
-static gboolean
-key_value_foreach (const gchar *key,
- const gchar *value,
- ParseKeyValueContext *parse_ctx)
-{
- if (g_str_equal (key, "rssi-threshold")) {
- if (!mm_get_uint_from_str (value, &parse_ctx->rssi_threshold)) {
- g_set_error (&parse_ctx->error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS,
- "invalid RSSI threshold value given: %s", value);
- return FALSE;
- }
- parse_ctx->rssi_set = TRUE;
- } else if (g_str_equal (key, "error-rate-threshold")) {
- parse_ctx->error_rate_threshold = mm_common_get_boolean_from_string (value, &parse_ctx->error);
- if (parse_ctx->error)
- return FALSE;
- parse_ctx->error_rate_set = TRUE;
- } else {
- g_set_error (&parse_ctx->error, MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED,
- "Invalid properties string, unsupported key '%s'", key);
- return FALSE;
- }
- return TRUE;
-}
-
-static GVariant *
-setup_thresholds_build_input (const gchar *str)
-{
- ParseKeyValueContext parse_ctx = { 0 };
- GVariantBuilder builder;
-
- mm_common_parse_key_value_string (setup_thresholds_str,
- &parse_ctx.error,
- (MMParseKeyValueForeachFn)key_value_foreach,
- &parse_ctx);
- /* If error, destroy the object */
- if (parse_ctx.error) {
- return NULL;
- }
-
- g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
-
- if (parse_ctx.rssi_set)
- g_variant_builder_add (&builder,
- "{sv}",
- "rssi-threshold",
- g_variant_new_uint32 (parse_ctx.rssi_threshold));
-
- if (parse_ctx.error_rate_set)
- g_variant_builder_add (&builder,
- "{sv}",
- "error-rate-threshold",
- g_variant_new_boolean (parse_ctx.error_rate_threshold));
-
- return g_variant_ref_sink (g_variant_builder_end (&builder));
-}
-
static void
setup_thresholds_process_reply (gboolean result,
const GError *error)
@@ -427,17 +362,18 @@ get_modem_ready (GObject *source,
/* Request to setup threshold? */
if (setup_thresholds_str) {
- g_autoptr(GVariant) dictionary = NULL;
+ g_autoptr(MMSignalThresholdProperties) properties = NULL;
+ g_autoptr(GError) error = NULL;
- dictionary = setup_thresholds_build_input (setup_thresholds_str);
- if (!dictionary) {
- g_printerr ("error: failed to parse input threshold setup settings: '%s'", setup_thresholds_str);
+ properties = mm_signal_threshold_properties_new_from_string (setup_thresholds_str, &error);
+ if (!properties) {
+ g_printerr ("error: failed to parse properties string: '%s'\n", error->message);
exit (EXIT_FAILURE);
}
g_debug ("Asynchronously setting up threshold values...");
mm_modem_signal_setup_thresholds (ctx->modem_signal,
- dictionary,
+ properties,
ctx->cancellable,
(GAsyncReadyCallback)setup_thresholds_ready,
NULL);
@@ -509,18 +445,18 @@ mmcli_modem_signal_run_synchronous (GDBusConnection *connection)
/* Request to setup threshold? */
if (setup_thresholds_str) {
- g_autoptr(GVariant) dictionary = NULL;
- gboolean result;
+ g_autoptr(MMSignalThresholdProperties) properties = NULL;
+ gboolean result;
- dictionary = setup_thresholds_build_input (setup_thresholds_str);
- if (!dictionary) {
- g_printerr ("error: failed to parse input threshold setup settings: '%s'", setup_thresholds_str);
+ properties = mm_signal_threshold_properties_new_from_string (setup_thresholds_str, &error);
+ if (!properties) {
+ g_printerr ("error: failed to parse properties string: '%s'\n", error->message);
exit (EXIT_FAILURE);
}
g_debug ("Asynchronously setting up threshold values...");
result = mm_modem_signal_setup_thresholds_sync (ctx->modem_signal,
- dictionary,
+ properties,
NULL,
&error);
setup_thresholds_process_reply (result, error);