From 9d7e3de4cd7d607dc797b8b6adf93eb75a018b6e Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Mon, 26 Dec 2011 18:50:16 +0100 Subject: api: MMModemBand is now an enum, not flags We don't want to handle bands as flags, in order to avoid the need of 64-bits for the enum. This change implies that setting allowed bands will be done by giving an array of uint32 values, signature "au". --- libmm-common/mm-common-helpers.c | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'libmm-common/mm-common-helpers.c') diff --git a/libmm-common/mm-common-helpers.c b/libmm-common/mm-common-helpers.c index 04f86f7a..937b8483 100644 --- a/libmm-common/mm-common-helpers.c +++ b/libmm-common/mm-common-helpers.c @@ -87,3 +87,44 @@ mm_common_get_access_technologies_string (MMModemAccessTechnology access_tech) return g_string_free (str, FALSE); } + +GArray * +mm_common_bands_variant_to_garray (GVariant *variant) +{ + GArray *array; + GVariantIter iter; + guint32 band = MM_MODEM_BAND_UNKNOWN; + + g_variant_iter_init (&iter, variant); + array = g_array_sized_new (FALSE, + FALSE, + sizeof (MMModemBand), + g_variant_iter_n_children (&iter)); + while (g_variant_iter_loop (&iter, "u", &band)) + g_array_append_val (array, band); + + return array; +} + +GVariant * +mm_common_bands_array_to_variant (const MMModemBand *bands, + guint n_bands) +{ + GVariantBuilder builder; + guint i; + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("au")); + for (i = 0; i < n_bands; i++) { + g_variant_builder_add_value (&builder, + g_variant_new_uint32 ((guint32)bands[i])); + } + + return g_variant_builder_end (&builder); +} + +GVariant * +mm_common_bands_garray_to_variant (GArray *array) +{ + return mm_common_bands_array_to_variant ((const MMModemBand *)array->data, + array->len); +} -- cgit v1.2.3-70-g09d2