diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-12-26 21:27:57 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:37 +0100 |
commit | aa3d98d0ff6ff75cdeb8106b7d9e1108eef4994e (patch) | |
tree | 12e804c49d57c52fb026a206b97e2808126ca500 | |
parent | d81d1d9d6a05e8c0024e887158c585c0c1540633 (diff) |
libmm-common: new bands string parser
-rw-r--r-- | libmm-common/mm-common-helpers.c | 49 | ||||
-rw-r--r-- | libmm-common/mm-common-helpers.h | 4 |
2 files changed, 53 insertions, 0 deletions
diff --git a/libmm-common/mm-common-helpers.c b/libmm-common/mm-common-helpers.c index c36c4d99..93509f11 100644 --- a/libmm-common/mm-common-helpers.c +++ b/libmm-common/mm-common-helpers.c @@ -128,6 +128,55 @@ mm_common_get_bands_string (const MMModemBand *bands, return g_string_free (str, FALSE); } +void +mm_common_get_bands_from_string (const gchar *str, + MMModemBand **bands, + guint *n_bands) +{ + GArray *array; + gchar **band_strings; + GEnumClass *enum_class; + + array = g_array_new (FALSE, FALSE, sizeof (MMModemBand)); + + enum_class = G_ENUM_CLASS (g_type_class_ref (MM_TYPE_MODEM_BAND)); + band_strings = g_strsplit (str, "|", -1); + + if (band_strings) { + guint i; + + for (i = 0; band_strings[i]; i++) { + guint j; + gboolean found = FALSE; + + for (j = 0; enum_class->values[j].value_nick; j++) { + if (g_str_equal (band_strings[i], enum_class->values[j].value_nick)) { + g_array_append_val (array, enum_class->values[j].value); + found = TRUE; + break; + } + } + + if (!found) + g_warning ("Couldn't match '%s' with a valid MMModemBand value", + band_strings[i]); + } + } + + if (!array->len) { + GEnumValue *value; + + value = g_enum_get_value (enum_class, MM_MODEM_BAND_UNKNOWN); + g_array_append_val (array, value->value); + } + + g_type_class_unref (enum_class); + g_strfreev (band_strings); + + *n_bands = array->len; + *bands = (MMModemBand *)g_array_free (array, FALSE); +} + GArray * mm_common_bands_variant_to_garray (GVariant *variant) { diff --git a/libmm-common/mm-common-helpers.h b/libmm-common/mm-common-helpers.h index dc09c555..595705b0 100644 --- a/libmm-common/mm-common-helpers.h +++ b/libmm-common/mm-common-helpers.h @@ -24,6 +24,10 @@ gchar *mm_common_get_access_technologies_string (MMModemAccessTechnology access_ gchar *mm_common_get_bands_string (const MMModemBand *bands, guint n_bands); +void mm_common_get_bands_from_string (const gchar *str, + MMModemBand **bands, + guint *n_bands); + GArray *mm_common_bands_variant_to_garray (GVariant *variant); GVariant *mm_common_bands_array_to_variant (const MMModemBand *bands, guint n_bands); |