diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2016-08-09 09:56:56 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2016-10-12 11:29:52 +0200 |
commit | 9d78f05cbd437169a6f4ca406166edbcc4042316 (patch) | |
tree | 2865f3ce92c232f8bcfbad5c58a8b941fa4629a8 /plugins/ublox/mm-modem-helpers-ublox.c | |
parent | 5d2e89e7129fadc92474fc55a87a84f7e6c98e12 (diff) |
ublox: new +URAT=X command builder
Diffstat (limited to 'plugins/ublox/mm-modem-helpers-ublox.c')
-rw-r--r-- | plugins/ublox/mm-modem-helpers-ublox.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/plugins/ublox/mm-modem-helpers-ublox.c b/plugins/ublox/mm-modem-helpers-ublox.c index b82b2d0c..1edd7a50 100644 --- a/plugins/ublox/mm-modem-helpers-ublox.c +++ b/plugins/ublox/mm-modem-helpers-ublox.c @@ -552,3 +552,49 @@ out: *out_preferred = preferred; return TRUE; } + +/*****************************************************************************/ +/* URAT=X command builder */ + +static gboolean +append_rat_value (GString *str, + MMModemMode mode, + GError **error) +{ + guint i; + + for (i = 0; i < G_N_ELEMENTS (ublox_combinations); i++) { + if (ublox_combinations[i] == mode) { + g_string_append_printf (str, "%u", i); + return TRUE; + } + } + + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "No AcT value matches requested mode"); + return FALSE; +} + +gchar * +mm_ublox_build_urat_set_command (MMModemMode allowed, + MMModemMode preferred, + GError **error) +{ + GString *command; + + command = g_string_new ("+URAT="); + if (!append_rat_value (command, allowed, error)) { + g_string_free (command, TRUE); + return NULL; + } + + if (preferred != MM_MODEM_MODE_NONE) { + g_string_append (command, ","); + if (!append_rat_value (command, preferred, error)) { + g_string_free (command, TRUE); + return NULL; + } + } + + return g_string_free (command, FALSE); +} |