aboutsummaryrefslogtreecommitdiff
path: root/libmm-glib
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-12-11 19:48:08 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-03-15 14:14:33 +0100
commit6a07753ba0647336503b129980054597db5958f2 (patch)
treec6a755eac26dd885a4915acbaff41d6eb8ca6f17 /libmm-glib
parent82693cf523456058f03a06d6e9e449e1df7caac2 (diff)
libmm-glib: handle bearer creation, deletion and listing
Diffstat (limited to 'libmm-glib')
-rw-r--r--libmm-glib/mm-modem.c235
-rw-r--r--libmm-glib/mm-modem.h33
2 files changed, 235 insertions, 33 deletions
diff --git a/libmm-glib/mm-modem.c b/libmm-glib/mm-modem.c
index 3109df9e..e5f79053 100644
--- a/libmm-glib/mm-modem.c
+++ b/libmm-glib/mm-modem.c
@@ -847,12 +847,133 @@ mm_modem_disable_sync (MMModem *self,
}
/**
+ * mm_modem_list_bearers:
+ * @self: A #MMModem.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously lists the packet data bearers in the #MMModem.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call mm_modem_list_bearers_finish() to get the result of the operation.
+ *
+ * See mm_modem_list_bearers_sync() for the synchronous, blocking version of this method.
+ */
+void
+mm_modem_list_bearers (MMModem *self,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_return_if_fail (MM_GDBUS_IS_MODEM (self));
+
+ mm_gdbus_modem_call_list_bearers (self,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * mm_modem_list_bearers_finish:
+ * @self: A #MMModem.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_list_bearers().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with mm_modem_list_bearers().
+ *
+ * Returns: (transfer-full): The list of bearer object paths, or %NULL if either none found or if @error is set.
+ */
+gchar **
+mm_modem_list_bearers_finish (MMModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ gchar **list;
+
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ if (!mm_gdbus_modem_call_list_bearers_finish (self,
+ &list,
+ res,
+ error))
+ return NULL;
+
+ /* Only non-empty lists are returned */
+ if (list && list[0])
+ return list;
+
+ g_strfreev (list);
+ return NULL;
+}
+
+/**
+ * mm_modem_list_bearers_sync:
+ * @self: A #MMModem.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously lists the packet data bearers in the #MMModem.
+ *
+ * The calling thread is blocked until a reply is received. See mm_modem_list_bearers()
+ * for the asynchronous version of this method.
+ *
+ * Returns: (transfer-full): The list of bearer object paths, or %NULL if either none found or if @error is set.
+ */
+gchar **
+mm_modem_list_bearers_sync (MMModem *self,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gchar **list;
+
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+
+ if (!mm_gdbus_modem_call_list_bearers_sync (self,
+ &list,
+ cancellable,
+ error))
+ return NULL;
+
+ /* Only non-empty lists are returned */
+ if (list && list[0])
+ return list;
+
+ g_strfreev (list);
+ return NULL;
+}
+
+static GVariant *
+create_bearer_build_properties (const gchar *first_property_name,
+ va_list var_args)
+{
+ const gchar *key;
+ GVariantBuilder builder;
+
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{ss}"));
+
+ key = first_property_name;
+ while (key) {
+ const gchar *value;
+
+ /* If a key with NULL value is given, just ignore it. */
+ value = va_arg (var_args, gchar *);
+ if (value)
+ g_variant_builder_add (&builder, "{ss}", key, value);
+
+ key = va_arg (var_args, gchar *);
+ }
+ return g_variant_builder_end (&builder);
+}
+
+/**
* mm_modem_create_bearer:
* @self: A #MMModem.
- * @properties: A dictionary with signature a{ss} with the properties to be used when creating the bearer.
* @cancellable: (allow-none): A #GCancellable or %NULL.
* @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
* @user_data: User data to pass to @callback.
+ * @first_property_name: Name of the first property to set.
+ * @...: Value for the first property, followed optionally by more name/value pairs, followed by %NULL.
*
* Asynchronously creates a new packet data bearer in the #MMModem.
*
@@ -868,52 +989,65 @@ mm_modem_disable_sync (MMModem *self,
*/
void
mm_modem_create_bearer (MMModem *self,
- GVariant *properties,
GCancellable *cancellable,
GAsyncReadyCallback callback,
- gpointer user_data)
+ gpointer user_data,
+ const gchar *first_property_name,
+ ...)
{
+ va_list va_args;
+ GVariant *properties;
+
g_return_if_fail (MM_GDBUS_IS_MODEM (self));
+ va_start (va_args, first_property_name);
+ properties = create_bearer_build_properties (first_property_name, va_args);
+
mm_gdbus_modem_call_create_bearer (self,
properties,
cancellable,
callback,
user_data);
+
+ g_variant_unref (properties);
+ va_end (va_args);
}
/**
* mm_modem_create_bearer_finish:
* @self: A #MMModem.
- * @out_path: (out): Return location for the object path of the newly created bearer, or %NULL to ignore.
* @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_create_bearer().
* @error: Return location for error or %NULL.
*
* Finishes an operation started with mm_modem_create_bearer().
*
- * Returns: (skip): %TRUE if the bearer was created, %FALSE if @error is set.
+ * Returns: (transfer-full): Path of the newly created bearer, or %NULL if @error is set.
*/
-gboolean
+gchar *
mm_modem_create_bearer_finish (MMModem *self,
- gchar **out_path,
GAsyncResult *res,
GError **error)
{
- g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+ gchar *out_path = NULL;
- return mm_gdbus_modem_call_create_bearer_finish (self,
- out_path,
- res,
- error);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
+
+ if (!mm_gdbus_modem_call_create_bearer_finish (self,
+ &out_path,
+ res,
+ error))
+ return NULL;
+
+ return out_path;
}
/**
* mm_modem_create_bearer_sync:
* @self: A #MMModem.
- * @properties: A dictionary with signature a{ss} with the properties to be used when creating the bearer.
- * @out_path: (out): Return location for the object path of the newly created bearer, or %NULL to ignore.
* @cancellable: (allow-none): A #GCancellable or %NULL.
* @error: Return location for error or %NULL.
+ * @first_property_name: Name of the first property to set.
+ * @...: Value for the first property, followed optionally by more name/value pairs, followed by %NULL.
*
* Synchronously creates a new packet data bearer in the #MMModem.
*
@@ -925,24 +1059,51 @@ mm_modem_create_bearer_finish (MMModem *self,
* The calling thread is blocked until a reply is received. See mm_modem_create_bearer()
* for the asynchronous version of this method.
*
- * Returns: (skip): %TRUE if the bearer was created, %FALSE if @error is set.
+ * Returns: (transfer-full): Path of the newly created bearer, or %NULL if @error is set.
*/
-gboolean
+gchar *
mm_modem_create_bearer_sync (MMModem *self,
- GVariant *properties,
- gchar **out_path,
GCancellable *cancellable,
- GError **error)
+ GError **error,
+ const gchar *first_property_name,
+ ...)
{
- g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), FALSE);
+ va_list va_args;
+ GVariant *properties;
+ gchar *out_path = NULL;
- return mm_gdbus_modem_call_create_bearer_sync (self,
- properties,
- out_path,
- cancellable,
- error);
+ g_return_val_if_fail (MM_GDBUS_IS_MODEM (self), NULL);
+
+ va_start (va_args, first_property_name);
+ properties = create_bearer_build_properties (first_property_name, va_args);
+
+ mm_gdbus_modem_call_create_bearer_sync (self,
+ properties,
+ &out_path,
+ cancellable,
+ error);
+
+ g_variant_unref (properties);
+ va_end (va_args);
+
+ return out_path;
}
+/**
+ * mm_modem_delete_bearer:
+ * @self: A #MMModem.
+ * @bearer: Path of the bearer to delete.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously deletes a given bearer from the #MMModem.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call mm_modem_delete_bearer_finish() to get the result of the operation.
+ *
+ * See mm_modem_delete_bearer_sync() for the synchronous, blocking version of this method.
+ */
void
mm_modem_delete_bearer (MMModem *self,
const gchar *bearer,
@@ -959,6 +1120,16 @@ mm_modem_delete_bearer (MMModem *self,
user_data);
}
+/**
+ * mm_modem_delete_bearer_finish:
+ * @self: A #MMModem.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_delete_bearer().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with mm_modem_delete_bearer().
+ *
+ * Returns: (skip): %TRUE if the bearer was deleted, %FALSE if @error is set.
+ */
gboolean
mm_modem_delete_bearer_finish (MMModem *self,
GAsyncResult *res,
@@ -971,6 +1142,20 @@ mm_modem_delete_bearer_finish (MMModem *self,
error);
}
+/**
+ * mm_modem_delete_bearer_sync:
+ * @self: A #MMModem.
+ * @bearer: Path of the bearer to delete.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+
+ * Synchronously deletes a given bearer from the #MMModem.
+ *
+ * The calling thread is blocked until a reply is received. See mm_modem_delete_bearer()
+ * for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the bearer was deleted, %FALSE if @error is set.
+ */
gboolean
mm_modem_delete_bearer_sync (MMModem *self,
const gchar *bearer,
diff --git a/libmm-glib/mm-modem.h b/libmm-glib/mm-modem.h
index d69d2e65..cea45e02 100644
--- a/libmm-glib/mm-modem.h
+++ b/libmm-glib/mm-modem.h
@@ -94,20 +94,37 @@ gboolean mm_modem_disable_sync (MMModem *self,
GCancellable *cancellable,
GError **error);
+void mm_modem_list_bearers (MMModem *self,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gchar **mm_modem_list_bearers_finish (MMModem *self,
+ GAsyncResult *res,
+ GError **error);
+gchar **mm_modem_list_bearers_sync (MMModem *self,
+ GCancellable *cancellable,
+ GError **error);
+
+#define MM_BEARER_PROPERTY_APN "apn"
+#define MM_BEARER_PROPERTY_IP_TYPE "ip-type"
+#define MM_BEARER_PROPERTY_USER "user"
+#define MM_BEARER_PROPERTY_PASSWORD "password"
+#define MM_BEARER_PROPERTY_NUMBER "number"
+
void mm_modem_create_bearer (MMModem *self,
- GVariant *arg_properties,
GCancellable *cancellable,
GAsyncReadyCallback callback,
- gpointer user_data);
-gboolean mm_modem_create_bearer_finish (MMModem *self,
- gchar **out_path,
+ gpointer user_data,
+ const gchar *first_property_name,
+ ...);
+gchar *mm_modem_create_bearer_finish (MMModem *self,
GAsyncResult *res,
GError **error);
-gboolean mm_modem_create_bearer_sync (MMModem *self,
- GVariant *arg_properties,
- gchar **out_path,
+gchar *mm_modem_create_bearer_sync (MMModem *self,
GCancellable *cancellable,
- GError **error);
+ GError **error,
+ const gchar *first_property_name,
+ ...);
void mm_modem_delete_bearer (MMModem *self,
const gchar *bearer,