MMBearerProperties * mm_bearer_properties_dup (MMBearerProperties *orig) { GVariant *dict; MMBearerProperties *copy; GError *error = NULL; g_return_val_if_fail (MM_IS_BEARER_PROPERTIES (orig), NULL); dict = mm_bearer_properties_get_dictionary (orig); copy = mm_bearer_properties_new_from_dictionary (dict, &error); g_assert_no_error (error); g_variant_unref (dict); return copy; }
GVariant * mm_simple_connect_properties_get_dictionary (MMSimpleConnectProperties *self) { GVariantBuilder builder; GVariantIter iter; gchar *key; GVariant *value; GVariant *bearer_properties_dictionary; /* We do allow NULL */ if (!self) return NULL; g_return_val_if_fail (MM_IS_SIMPLE_CONNECT_PROPERTIES (self), NULL); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (self->priv->pin) g_variant_builder_add (&builder, "{sv}", PROPERTY_PIN, g_variant_new_string (self->priv->pin)); if (self->priv->operator_id) g_variant_builder_add (&builder, "{sv}", PROPERTY_OPERATOR_ID, g_variant_new_string (self->priv->operator_id)); if (self->priv->bands) g_variant_builder_add (&builder, "{sv}", PROPERTY_BANDS, mm_common_bands_array_to_variant (self->priv->bands, self->priv->n_bands)); if (self->priv->allowed_modes_set) { g_variant_builder_add (&builder, "{sv}", PROPERTY_ALLOWED_MODES, g_variant_new_uint32 (self->priv->allowed_modes)); g_variant_builder_add (&builder, "{sv}", PROPERTY_PREFERRED_MODE, g_variant_new_uint32 (self->priv->preferred_mode)); } /* Merge dictionaries */ bearer_properties_dictionary = mm_bearer_properties_get_dictionary (self->priv->bearer_properties); g_variant_iter_init (&iter, bearer_properties_dictionary); while (g_variant_iter_next (&iter, "{sv}", &key, &value)) { g_variant_builder_add (&builder, "{sv}", key, value); g_variant_unref (value); g_free (key); } g_variant_unref (bearer_properties_dictionary); return g_variant_ref_sink (g_variant_builder_end (&builder)); }