/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
* Copyright (C) 2009 Novell, Inc.
* Author: Tambet Ingo (tambet@gmail.com).
*
* Copyright (C) 2009 - 2012 Red Hat, Inc.
* Copyright (C) 2012 Lanedo GmbH.
*/
#ifndef NM_MOBILE_PROVIDERS_H
#define NM_MOBILE_PROVIDERS_H
#include <glib.h>
#include <glib-object.h>
#include <gio/gio.h>
/******************************************************************************/
/* Access method type */
/**
* NMAMobileFamily:
* @NMA_MOBILE_FAMILY_UNKNOWN: Unknown or invalid network access method
* @NMA_MOBILE_FAMILY_3GPP: 3rd Generation Partnership Project (3GPP) network
* @NMA_MOBILE_FAMILY_CDMA: A CDMA network
*/
typedef enum {
NMA_MOBILE_FAMILY_UNKNOWN = 0,
NMA_MOBILE_FAMILY_3GPP,
NMA_MOBILE_FAMILY_CDMA
} NMAMobileFamily;
#define NMA_TYPE_MOBILE_ACCESS_METHOD (nma_mobile_access_method_get_type ())
typedef struct _NMAMobileAccessMethod NMAMobileAccessMethod;
GType nma_mobile_access_method_get_type (void);
NMAMobileAccessMethod *nma_mobile_access_method_ref (NMAMobileAccessMethod *method);
void nma_mobile_access_method_unref (NMAMobileAccessMethod *method);
const gchar *nma_mobile_access_method_get_name (NMAMobileAccessMethod *method);
const gchar *nma_mobile_access_method_get_username (NMAMobileAccessMethod *method);
const gchar *nma_mobile_access_method_get_password (NMAMobileAccessMethod *method);
const gchar *nma_mobile_access_method_get_gateway (NMAMobileAccessMethod *method);
const gchar **nma_mobile_access_method_get_dns (NMAMobileAccessMethod *method);
const gchar *nma_mobile_access_method_get_3gpp_apn (NMAMobileAccessMethod *method);
NMAMobileFamily nma_mobile_access_method_get_family (NMAMobileAccessMethod *method);
/******************************************************************************/
/* Mobile provider type */
#define NMA_TYPE_MOBILE_PROVIDER (nma_mobile_provider_get_type ())
typedef struct _NMAMobileProvider NMAMobileProvider;
GType nma_mobile_provider_get_type (void);
NMAMobileProvider *nma_mobile_provider_ref (NMAMobileProvider *provider);
void nma_mobile_provider_unref (NMAMobileProvider *provider);
const gchar *nma_mobile_provider_get_name (NMAMobileProvider *provider);
GSList *nma_mobile_provider_get_methods (NMAMobileProvider *provider);
const gchar **nma_mobile_provider_get_3gpp_mcc_mnc (NMAMobileProvider *provider);
const guint32 *nma_mobile_provider_get_cdma_sid (NMAMobileProvider *provider);
/******************************************************************************/
/* Country Info type */
#define NMA_TYPE_COUNTRY_INFO (nma_country_info_get_type ())
typedef struct _NMACountryInfo NMACountryInfo;
GType nma_country_info_get_type (void);
NMACountryInfo *nma_country_info_ref (NMACountryInfo *country_info);
void nma_country_info_unref (NMACountryInfo *country_info);
const gchar *nma_country_info_get_country_code (NMACountryInfo *country_info);
const gchar *nma_country_info_get_country_name (NMACountryInfo *country_info);
GSList *nma_country_info_get_providers (NMACountryInfo *country_info);
/******************************************************************************/
/* Mobile providers database type */
#define NMA_TYPE_MOBILE_PROVIDERS_DATABASE (nma_mobile_providers_database_get_type ())
#define NMA_MOBILE_PROVIDERS_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NMA_TYPE_MOBILE_PROVIDERS_DATABASE, NMAMobileProvidersDatabase))
#define NMA_MOBILE_PROVIDERS_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NMA_TYPE_MOBILE_PROVIDERS_DATABASE, NMAMobileProvidersDatabaseClass))
#define NMA_IS_MOBILE_PROVIDERS_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NMA_TYPE_MOBILE_PROVIDERS_DATABASE))
#define NMA_IS_MOBILE_PROVIDERS_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NMA_TYPE_MOBILE_PROVIDERS_DATABASE))
#define NMA_MOBILE_PROVIDERS_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NMA_TYPE_MOBILE_PROVIDERS_DATABASE, NMAMobileProvidersDatabaseClass))
typedef struct _NMAMobileProvidersDatabase NMAMobileProvidersDatabase;
typedef struct _NMAMobileProvidersDatabaseClass NMAMobileProvidersDatabaseClass;
typedef struct _NMAMobileProvidersDatabasePrivate NMAMobileProvidersDatabasePrivate;
struct _NMAMobileProvidersDatabase {
GObject parent;
NMAMobileProvidersDatabasePrivate *priv;
};
struct _NMAMobileProvidersDatabaseClass {
GObjectClass parent;
};
GType nma_mobile_providers_database_get_type (void);
void nma_mobile_providers_database_new (const gchar *country_codes,
const gchar *service_providers,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
NMAMobileProvidersDatabase *nma_mobile_providers_database_new_finish (GAsyncResult *res,
GError **error);
NMAMobileProvidersDatabase *nma_mobile_providers_database_new_sync (const gchar *country_codes,
const gchar *service_providers,
GCancellable *cancellable,
GError **error);
GHashTable *nma_mobile_providers_database_get_countries (NMAMobileProvidersDatabase *self);
void nma_mobile_providers_database_dump (NMAMobileProvidersDatabase *self);
NMACountryInfo *nma_mobile_providers_database_lookup_country (NMAMobileProvidersDatabase *self,
const gchar *country_code);
NMAMobileProvider *nma_mobile_providers_database_lookup_3gpp_mcc_mnc (NMAMobileProvidersDatabase *self,
const gchar *mccmnc);
NMAMobileProvider *nma_mobile_providers_database_lookup_cdma_sid (NMAMobileProvidersDatabase *self,
guint32 sid);
/******************************************************************************/
/* Utils */
gboolean nma_mobile_providers_split_3gpp_mcc_mnc (const gchar *mccmnc,
gchar **mcc,
gchar **mnc);
#endif /* NM_MOBILE_PROVIDERS_H */