diff options
Diffstat (limited to 'src/mm-base-bearer.h')
-rw-r--r-- | src/mm-base-bearer.h | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/src/mm-base-bearer.h b/src/mm-base-bearer.h new file mode 100644 index 00000000..2c196f67 --- /dev/null +++ b/src/mm-base-bearer.h @@ -0,0 +1,139 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details: + * + * Author: Aleksander Morgado <aleksander@lanedo.com> + * + * Copyright (C) 2011 Google, Inc. + * Copyright (C) 2011 - 2013 Aleksander Morgado <aleksander@gnu.org> + */ + +#ifndef MM_BASE_BEARER_H +#define MM_BASE_BEARER_H + +#include <glib.h> +#include <glib-object.h> + +#include <ModemManager.h> +#define _LIBMM_INSIDE_MM +#include <libmm-glib.h> + +#include "mm-base-modem.h" + +/*****************************************************************************/ +/* Helpers to implement connect() */ + +typedef struct _MMBearerConnectResult MMBearerConnectResult; +MMBearerConnectResult *mm_bearer_connect_result_new (MMPort *data, + MMBearerIpConfig *ipv4_config, + MMBearerIpConfig *ipv6_config); +void mm_bearer_connect_result_unref (MMBearerConnectResult *result); +MMBearerConnectResult *mm_bearer_connect_result_ref (MMBearerConnectResult *result); +MMPort *mm_bearer_connect_result_peek_data (MMBearerConnectResult *result); +MMBearerIpConfig *mm_bearer_connect_result_peek_ipv4_config (MMBearerConnectResult *result); +MMBearerIpConfig *mm_bearer_connect_result_peek_ipv6_config (MMBearerConnectResult *result); + +/*****************************************************************************/ + +#define MM_TYPE_BASE_BEARER (mm_base_bearer_get_type ()) +#define MM_BASE_BEARER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_BASE_BEARER, MMBaseBearer)) +#define MM_BASE_BEARER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MM_TYPE_BASE_BEARER, MMBaseBearerClass)) +#define MM_IS_BASE_BEARER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_BASE_BEARER)) +#define MM_IS_BASE_BEARER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_BASE_BEARER)) +#define MM_BASE_BEARER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_BASE_BEARER, MMBaseBearerClass)) + +typedef struct _MMBaseBearer MMBaseBearer; +typedef struct _MMBaseBearerClass MMBaseBearerClass; +typedef struct _MMBaseBearerPrivate MMBaseBearerPrivate; + +#define MM_BASE_BEARER_PATH "bearer-path" +#define MM_BASE_BEARER_CONNECTION "bearer-connection" +#define MM_BASE_BEARER_MODEM "bearer-modem" +#define MM_BASE_BEARER_STATUS "bearer-status" +#define MM_BASE_BEARER_CONFIG "bearer-config" +#define MM_BASE_BEARER_DEFAULT_IP_FAMILY "bearer-deafult-ip-family" + +typedef enum { /*< underscore_name=mm_bearer_status >*/ + MM_BEARER_STATUS_DISCONNECTED, + MM_BEARER_STATUS_DISCONNECTING, + MM_BEARER_STATUS_CONNECTING, + MM_BEARER_STATUS_CONNECTED, +} MMBearerStatus; + +typedef enum { /*< underscore_name=mm_bearer_connection_status >*/ + MM_BEARER_CONNECTION_STATUS_UNKNOWN, + MM_BEARER_CONNECTION_STATUS_DISCONNECTED, + MM_BEARER_CONNECTION_STATUS_DISCONNECTING, + MM_BEARER_CONNECTION_STATUS_CONNECTED, + MM_BEARER_CONNECTION_STATUS_CONNECTION_FAILED, +} MMBearerConnectionStatus; + +struct _MMBaseBearer { + MmGdbusBearerSkeleton parent; + MMBaseBearerPrivate *priv; +}; + +struct _MMBaseBearerClass { + MmGdbusBearerSkeletonClass parent; + + /* Connect this bearer */ + void (* connect) (MMBaseBearer *bearer, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + MMBearerConnectResult * (* connect_finish) (MMBaseBearer *bearer, + GAsyncResult *res, + GError **error); + + /* Disconnect this bearer */ + void (* disconnect) (MMBaseBearer *bearer, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (* disconnect_finish) (MMBaseBearer *bearer, + GAsyncResult *res, + GError **error); + + /* Report connection status of this bearer */ + void (* report_connection_status) (MMBaseBearer *bearer, + MMBearerConnectionStatus status); +}; + +GType mm_base_bearer_get_type (void); + +void mm_base_bearer_export (MMBaseBearer *self); + +const gchar *mm_base_bearer_get_path (MMBaseBearer *self); +MMBearerStatus mm_base_bearer_get_status (MMBaseBearer *self); +MMBearerProperties *mm_base_bearer_peek_config (MMBaseBearer *self); +MMBearerProperties *mm_base_bearer_get_config (MMBaseBearer *self); +MMBearerIpFamily mm_base_bearer_get_default_ip_family (MMBaseBearer *self); + + +void mm_base_bearer_connect (MMBaseBearer *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_base_bearer_connect_finish (MMBaseBearer *self, + GAsyncResult *res, + GError **error); + +void mm_base_bearer_disconnect (MMBaseBearer *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_base_bearer_disconnect_finish (MMBaseBearer *self, + GAsyncResult *res, + GError **error); + +void mm_base_bearer_disconnect_force (MMBaseBearer *self); + +void mm_base_bearer_report_connection_status (MMBaseBearer *self, + MMBearerConnectionStatus status); + +#endif /* MM_BASE_BEARER_H */ |