gsm: add AccessTechnology property and associated infrastructure
AccessTechnology takes over half of what NetworkMode was supposed to do, but we'll keep NetworkMode around for a while for compatibility anyway. Create async updaters that subclasses can use to update the access tech when they get unsolicited messages.
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
* GNU General Public License for more details:
|
||||
*
|
||||
* Copyright (C) 2008 - 2009 Novell, Inc.
|
||||
* Copyright (C) 2009 Red Hat, Inc.
|
||||
* Copyright (C) 2009 - 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
@@ -459,7 +459,7 @@ handle_mode_change (MMSerialPort *port,
|
||||
gpointer user_data)
|
||||
{
|
||||
MMModemHuaweiGsm *self = MM_MODEM_HUAWEI_GSM (user_data);
|
||||
MMModemHuaweiGsmPrivate *priv = MM_MODEM_HUAWEI_GSM_GET_PRIVATE (self);
|
||||
MMModemGsmMode new_mode = MM_MODEM_GSM_MODE_UNKNOWN;
|
||||
char *str;
|
||||
int a;
|
||||
int b;
|
||||
@@ -473,24 +473,24 @@ handle_mode_change (MMSerialPort *port,
|
||||
g_free (str);
|
||||
|
||||
if (a == 3 && b == 2)
|
||||
priv->mode = MM_MODEM_GSM_MODE_GPRS;
|
||||
new_mode = MM_MODEM_GSM_MODE_GPRS;
|
||||
else if (a == 3 && b == 3)
|
||||
priv->mode = MM_MODEM_GSM_MODE_EDGE;
|
||||
new_mode = MM_MODEM_GSM_MODE_EDGE;
|
||||
else if (a == 5 && b == 4)
|
||||
priv->mode = MM_MODEM_GSM_MODE_UMTS;
|
||||
new_mode = MM_MODEM_GSM_MODE_UMTS;
|
||||
else if (a == 5 && b == 5)
|
||||
priv->mode = MM_MODEM_GSM_MODE_HSDPA;
|
||||
new_mode = MM_MODEM_GSM_MODE_HSDPA;
|
||||
else if (a == 5 && b == 6)
|
||||
priv->mode = MM_MODEM_GSM_MODE_HSUPA;
|
||||
new_mode = MM_MODEM_GSM_MODE_HSUPA;
|
||||
else if (a == 5 && b == 7)
|
||||
priv->mode = MM_MODEM_GSM_MODE_HSPA;
|
||||
new_mode = MM_MODEM_GSM_MODE_HSPA;
|
||||
else {
|
||||
g_warning ("Couldn't parse mode change value: '%s'", str);
|
||||
return;
|
||||
}
|
||||
|
||||
g_debug ("Mode: %d", priv->mode);
|
||||
mm_modem_gsm_network_mode (MM_MODEM_GSM_NETWORK (self), priv->mode);
|
||||
g_debug ("Access Technology: %d", new_mode);
|
||||
mm_generic_gsm_update_access_technology (MM_GENERIC_GSM (self), new_mode);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
+121
-23
@@ -29,6 +29,7 @@
|
||||
#include "mm-serial-parsers.h"
|
||||
#include "mm-modem-helpers.h"
|
||||
#include "mm-options.h"
|
||||
#include "mm-properties-changed-signal.h"
|
||||
|
||||
static void modem_init (MMModem *modem_class);
|
||||
static void modem_gsm_card_init (MMModemGsmCard *gsm_card_class);
|
||||
@@ -69,7 +70,7 @@ typedef struct {
|
||||
/* Index 0 for CREG, index 1 for CGREG */
|
||||
gulong lac[2];
|
||||
gulong cell_id[2];
|
||||
gint access_tech[2];
|
||||
MMModemGsmMode access_tech;
|
||||
|
||||
MMModemGsmNetworkRegStatus reg_status;
|
||||
guint pending_reg_id;
|
||||
@@ -107,6 +108,8 @@ static gboolean handle_reg_status_response (MMGenericGsm *self,
|
||||
GString *response,
|
||||
GError **error);
|
||||
|
||||
static MMModemGsmMode etsi_act_to_mm_mode (gint act);
|
||||
|
||||
MMModem *
|
||||
mm_generic_gsm_new (const char *device,
|
||||
const char *driver,
|
||||
@@ -864,7 +867,8 @@ disable (MMModem *modem,
|
||||
MMModemFn callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
MMGenericGsmPrivate *priv = MM_GENERIC_GSM_GET_PRIVATE (modem);
|
||||
MMGenericGsm *self = MM_GENERIC_GSM (modem);
|
||||
MMGenericGsmPrivate *priv = MM_GENERIC_GSM_GET_PRIVATE (self);
|
||||
MMCallbackInfo *info;
|
||||
MMModemState state;
|
||||
|
||||
@@ -881,8 +885,7 @@ disable (MMModem *modem,
|
||||
priv->lac[1] = 0;
|
||||
priv->cell_id[0] = 0;
|
||||
priv->cell_id[1] = 0;
|
||||
priv->access_tech[0] = -1;
|
||||
priv->access_tech[1] = -1;
|
||||
mm_generic_gsm_update_access_technology (self, MM_MODEM_GSM_MODE_UNKNOWN);
|
||||
|
||||
/* Close the secondary port if its open */
|
||||
if (priv->secondary && mm_serial_port_is_open (priv->secondary))
|
||||
@@ -1465,7 +1468,10 @@ reg_state_changed (MMSerialPort *port,
|
||||
idx = cgreg ? 1 : 0;
|
||||
priv->lac[idx] = lac;
|
||||
priv->cell_id[idx] = cell_id;
|
||||
priv->access_tech[idx] = access_tech;
|
||||
|
||||
/* Only update access technology if it appeared in the CREG/CGREG response */
|
||||
if (access_tech != -1)
|
||||
mm_generic_gsm_update_access_technology (self, etsi_act_to_mm_mode (access_tech));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -1531,8 +1537,10 @@ handle_reg_status_response (MMGenericGsm *self,
|
||||
idx = cgreg ? 1 : 0;
|
||||
priv->lac[idx] = lac;
|
||||
priv->cell_id[idx] = ci;
|
||||
if (act >= 0) /* Let subclasses handle if they want */
|
||||
priv->access_tech[idx] = act;
|
||||
|
||||
/* Only update access technology if it appeared in the CREG/CGREG response */
|
||||
if (act != -1)
|
||||
mm_generic_gsm_update_access_technology (self, etsi_act_to_mm_mode (act));
|
||||
|
||||
if ((cgreg == FALSE) && status >= 0) {
|
||||
/* Update cached registration status */
|
||||
@@ -2160,6 +2168,84 @@ get_signal_quality (MMModemGsmNetwork *modem,
|
||||
mm_serial_port_queue_command (connected ? priv->secondary : priv->primary, "+CSQ", 3, get_signal_quality_done, info);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
MMModemGsmMode mode;
|
||||
gint etsi_act;
|
||||
} ModeEtsi;
|
||||
|
||||
static ModeEtsi modes_table[] = {
|
||||
{ MM_MODEM_GSM_MODE_GSM, 0 },
|
||||
{ MM_MODEM_GSM_MODE_GSM_COMPACT, 1 },
|
||||
{ MM_MODEM_GSM_MODE_UMTS, 2 },
|
||||
{ MM_MODEM_GSM_MODE_EDGE, 3 },
|
||||
{ MM_MODEM_GSM_MODE_HSDPA, 4 },
|
||||
{ MM_MODEM_GSM_MODE_HSUPA, 5 },
|
||||
{ MM_MODEM_GSM_MODE_HSDPA |
|
||||
MM_MODEM_GSM_MODE_HSUPA, 6 },
|
||||
{ MM_MODEM_GSM_MODE_HSDPA |
|
||||
MM_MODEM_GSM_MODE_HSUPA, 7 }, /* E-UTRAN/LTE */
|
||||
{ MM_MODEM_GSM_MODE_UNKNOWN, -1 },
|
||||
};
|
||||
|
||||
static MMModemGsmMode
|
||||
etsi_act_to_mm_mode (gint act)
|
||||
{
|
||||
ModeEtsi *iter = &modes_table[0];
|
||||
|
||||
while (iter->mode != MM_MODEM_GSM_MODE_UNKNOWN) {
|
||||
if (iter->etsi_act == act)
|
||||
return iter->mode;
|
||||
}
|
||||
return MM_MODEM_GSM_MODE_UNKNOWN;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
check_for_single_value (guint32 value)
|
||||
{
|
||||
gboolean found = FALSE;
|
||||
guint32 i;
|
||||
|
||||
for (i = 1; i <= 32; i++) {
|
||||
if (value & 0x1) {
|
||||
if (found)
|
||||
return FALSE; /* More than one bit set */
|
||||
found = TRUE;
|
||||
}
|
||||
value >>= 1;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
mm_generic_gsm_update_access_technology (MMGenericGsm *modem,
|
||||
MMModemGsmMode mode)
|
||||
{
|
||||
MMGenericGsmPrivate *priv;
|
||||
|
||||
g_return_if_fail (modem != NULL);
|
||||
g_return_if_fail (MM_IS_GENERIC_GSM (modem));
|
||||
|
||||
g_return_if_fail (check_for_single_value (mode) || (mode == MM_MODEM_GSM_MODE_HSPA));
|
||||
g_return_if_fail ((mode & MM_MODEM_GSM_MODE_ANY) == 0);
|
||||
g_return_if_fail ((mode & MM_MODEM_GSM_MODE_2G_PREFERRED) == 0);
|
||||
g_return_if_fail ((mode & MM_MODEM_GSM_MODE_3G_PREFERRED) == 0);
|
||||
g_return_if_fail ((mode & MM_MODEM_GSM_MODE_2G_ONLY) == 0);
|
||||
g_return_if_fail ((mode & MM_MODEM_GSM_MODE_3G_ONLY) == 0);
|
||||
|
||||
priv = MM_GENERIC_GSM_GET_PRIVATE (modem);
|
||||
|
||||
if (mode != priv->access_tech) {
|
||||
priv->access_tech = mode;
|
||||
g_object_notify (G_OBJECT (modem), MM_MODEM_GSM_NETWORK_ACCESS_TECHNOLOGY);
|
||||
|
||||
/* Deprecated value */
|
||||
g_signal_emit_by_name (G_OBJECT (modem), "NetworkMode", mode);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/* MMModemGsmSms interface */
|
||||
|
||||
@@ -2409,17 +2495,6 @@ simple_status_got_band (MMModem *modem,
|
||||
g_hash_table_insert ((GHashTable *) user_data, "band", simple_uint_value (result));
|
||||
}
|
||||
|
||||
static void
|
||||
simple_status_got_mode (MMModem *modem,
|
||||
guint32 result,
|
||||
GError *error,
|
||||
gpointer user_data)
|
||||
{
|
||||
/* Ignore network mode errors since there's no generic implementation for it */
|
||||
if (!error)
|
||||
g_hash_table_insert ((GHashTable *) user_data, "network_mode", simple_uint_value (result));
|
||||
}
|
||||
|
||||
static void
|
||||
simple_status_got_reg_info (MMModemGsmNetwork *modem,
|
||||
MMModemGsmNetworkRegStatus status,
|
||||
@@ -2459,9 +2534,11 @@ simple_get_status (MMModemSimple *simple,
|
||||
MMModemSimpleGetStatusFn callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
MMModemGsmNetwork *gsm;
|
||||
MMModemGsmNetwork *gsm = MM_MODEM_GSM_NETWORK (simple);
|
||||
MMGenericGsmPrivate *priv = MM_GENERIC_GSM_GET_PRIVATE (simple);
|
||||
GHashTable *properties;
|
||||
MMCallbackInfo *info;
|
||||
MMModemDeprecatedMode old_mode;
|
||||
|
||||
info = mm_callback_info_new_full (MM_MODEM (simple),
|
||||
simple_get_status_invoke,
|
||||
@@ -2471,11 +2548,18 @@ simple_get_status (MMModemSimple *simple,
|
||||
properties = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, simple_free_gvalue);
|
||||
mm_callback_info_set_data (info, "simple-get-status", properties, (GDestroyNotify) g_hash_table_unref);
|
||||
|
||||
gsm = MM_MODEM_GSM_NETWORK (simple);
|
||||
mm_modem_gsm_network_get_signal_quality (gsm, simple_status_got_signal_quality, properties);
|
||||
mm_modem_gsm_network_get_band (gsm, simple_status_got_band, properties);
|
||||
mm_modem_gsm_network_get_mode (gsm, simple_status_got_mode, properties);
|
||||
mm_modem_gsm_network_get_registration_info (gsm, simple_status_got_reg_info, properties);
|
||||
|
||||
if (priv->access_tech > -1) {
|
||||
/* Deprecated key */
|
||||
old_mode = mm_modem_gsm_network_new_mode_to_old (priv->access_tech);
|
||||
g_hash_table_insert (properties, "network_mode", simple_uint_value (old_mode));
|
||||
|
||||
/* New key */
|
||||
g_hash_table_insert (properties, "access_technology", simple_uint_value (priv->access_tech));
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
@@ -2532,9 +2616,12 @@ mm_generic_gsm_init (MMGenericGsm *self)
|
||||
{
|
||||
MMGenericGsmPrivate *priv = MM_GENERIC_GSM_GET_PRIVATE (self);
|
||||
|
||||
priv->access_tech[0] = -1;
|
||||
priv->access_tech[1] = -1;
|
||||
priv->access_tech = MM_MODEM_GSM_MODE_UNKNOWN;
|
||||
priv->reg_regex = mm_gsm_creg_regex_get (TRUE);
|
||||
|
||||
mm_properties_changed_signal_register_property (G_OBJECT (self),
|
||||
MM_MODEM_GSM_NETWORK_ACCESS_TECHNOLOGY,
|
||||
MM_MODEM_GSM_NETWORK_DBUS_INTERFACE);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2549,6 +2636,7 @@ set_property (GObject *object, guint prop_id,
|
||||
case MM_GENERIC_GSM_PROP_INIT_CMD_OPTIONAL:
|
||||
case MM_GENERIC_GSM_PROP_SUPPORTED_BANDS:
|
||||
case MM_GENERIC_GSM_PROP_SUPPORTED_MODES:
|
||||
case MM_GENERIC_GSM_PROP_ACCESS_TECHNOLOGY:
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
@@ -2597,6 +2685,12 @@ get_property (GObject *object, guint prop_id,
|
||||
case MM_GENERIC_GSM_PROP_SUPPORTED_MODES:
|
||||
g_value_set_uint (value, 0);
|
||||
break;
|
||||
case MM_GENERIC_GSM_PROP_ACCESS_TECHNOLOGY:
|
||||
if (mm_modem_get_state (MM_MODEM (object)) >= MM_MODEM_STATE_ENABLED)
|
||||
g_value_set_uint (value, priv->access_tech);
|
||||
else
|
||||
g_value_set_uint (value, MM_MODEM_GSM_MODE_UNKNOWN);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
@@ -2659,6 +2753,10 @@ mm_generic_gsm_class_init (MMGenericGsmClass *klass)
|
||||
MM_GENERIC_GSM_PROP_SUPPORTED_MODES,
|
||||
MM_MODEM_GSM_CARD_SUPPORTED_MODES);
|
||||
|
||||
g_object_class_override_property (object_class,
|
||||
MM_GENERIC_GSM_PROP_ACCESS_TECHNOLOGY,
|
||||
MM_MODEM_GSM_NETWORK_ACCESS_TECHNOLOGY);
|
||||
|
||||
g_object_class_install_property
|
||||
(object_class, MM_GENERIC_GSM_PROP_POWER_UP_CMD,
|
||||
g_param_spec_string (MM_GENERIC_GSM_POWER_UP_CMD,
|
||||
|
||||
+17
-2
@@ -11,7 +11,7 @@
|
||||
* GNU General Public License for more details:
|
||||
*
|
||||
* Copyright (C) 2008 - 2009 Novell, Inc.
|
||||
* Copyright (C) 2009 Red Hat, Inc.
|
||||
* Copyright (C) 2009 - 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef MM_GENERIC_GSM_H
|
||||
@@ -43,7 +43,8 @@ typedef enum {
|
||||
MM_GENERIC_GSM_PROP_INIT_CMD,
|
||||
MM_GENERIC_GSM_PROP_SUPPORTED_BANDS,
|
||||
MM_GENERIC_GSM_PROP_SUPPORTED_MODES,
|
||||
MM_GENERIC_GSM_PROP_INIT_CMD_OPTIONAL
|
||||
MM_GENERIC_GSM_PROP_INIT_CMD_OPTIONAL,
|
||||
MM_GENERIC_GSM_PROP_ACCESS_TECHNOLOGY
|
||||
} MMGenericGsmProp;
|
||||
|
||||
|
||||
@@ -76,6 +77,13 @@ typedef struct {
|
||||
GString *response,
|
||||
GError *error,
|
||||
MMCallbackInfo *info);
|
||||
|
||||
/* Called by the generic class to the current radio access technology the
|
||||
* device is using while communicating with the base station.
|
||||
*/
|
||||
void (*get_access_technology) (MMGenericGsm *self,
|
||||
MMModemUIntFn callback,
|
||||
gpointer user_data);
|
||||
} MMGenericGsmClass;
|
||||
|
||||
GType mm_generic_gsm_get_type (void);
|
||||
@@ -97,6 +105,13 @@ guint32 mm_generic_gsm_get_cid (MMGenericGsm *modem);
|
||||
void mm_generic_gsm_set_reg_status (MMGenericGsm *modem,
|
||||
MMModemGsmNetworkRegStatus status);
|
||||
|
||||
/* Called to asynchronously update the current access technology of the device;
|
||||
* this is NOT the 2G/3G mode preference, but the current radio access
|
||||
* technology being used to communicate with the base station.
|
||||
*/
|
||||
void mm_generic_gsm_update_access_technology (MMGenericGsm *modem,
|
||||
MMModemGsmMode mode);
|
||||
|
||||
void mm_generic_gsm_check_pin (MMGenericGsm *modem,
|
||||
MMModemFn callback,
|
||||
gpointer user_data);
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
* GNU General Public License for more details:
|
||||
*
|
||||
* Copyright (C) 2008 Novell, Inc.
|
||||
* Copyright (C) 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
@@ -42,6 +43,10 @@ static void impl_gsm_modem_set_band (MMModemGsmNetwork *modem,
|
||||
static void impl_gsm_modem_get_band (MMModemGsmNetwork *modem,
|
||||
DBusGMethodInvocation *context);
|
||||
|
||||
static void impl_gsm_modem_set_allowed_modes (MMModemGsmNetwork *modem,
|
||||
MMModemGsmMode mode,
|
||||
DBusGMethodInvocation *context);
|
||||
|
||||
static void impl_gsm_modem_set_network_mode (MMModemGsmNetwork *modem,
|
||||
MMModemGsmMode mode,
|
||||
DBusGMethodInvocation *context);
|
||||
@@ -68,6 +73,67 @@ static guint signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
MMModemGsmMode
|
||||
mm_modem_gsm_network_old_mode_to_new (MMModemDeprecatedMode old_mode)
|
||||
{
|
||||
/* Translate deprecated mode into new mode */
|
||||
switch (old_mode) {
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_GPRS:
|
||||
return MM_MODEM_GSM_MODE_GPRS;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_EDGE:
|
||||
return MM_MODEM_GSM_MODE_EDGE;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_UMTS:
|
||||
return MM_MODEM_GSM_MODE_UMTS;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSDPA:
|
||||
return MM_MODEM_GSM_MODE_HSDPA;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_PREFERRED:
|
||||
return MM_MODEM_GSM_MODE_2G_PREFERRED;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_PREFERRED:
|
||||
return MM_MODEM_GSM_MODE_3G_PREFERRED;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_ONLY:
|
||||
return MM_MODEM_GSM_MODE_2G_ONLY;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_ONLY:
|
||||
return MM_MODEM_GSM_MODE_3G_ONLY;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSUPA:
|
||||
return MM_MODEM_GSM_MODE_HSUPA;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSPA:
|
||||
return MM_MODEM_GSM_MODE_HSDPA | MM_MODEM_GSM_MODE_HSUPA;
|
||||
case MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_ANY:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return MM_MODEM_GSM_MODE_ANY;
|
||||
}
|
||||
|
||||
MMModemDeprecatedMode
|
||||
mm_modem_gsm_network_new_mode_to_old (MMModemGsmMode new_mode)
|
||||
{
|
||||
/* Translate new mode into old deprecated mode */
|
||||
if (new_mode & MM_MODEM_GSM_MODE_GPRS)
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_GPRS;
|
||||
else if (new_mode & MM_MODEM_GSM_MODE_EDGE)
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_EDGE;
|
||||
else if (new_mode & MM_MODEM_GSM_MODE_UMTS)
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_UMTS;
|
||||
else if (new_mode & MM_MODEM_GSM_MODE_HSDPA)
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSDPA;
|
||||
else if (new_mode & MM_MODEM_GSM_MODE_2G_PREFERRED)
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_PREFERRED;
|
||||
else if (new_mode & MM_MODEM_GSM_MODE_3G_PREFERRED)
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_PREFERRED;
|
||||
else if (new_mode & MM_MODEM_GSM_MODE_2G_ONLY)
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_ONLY;
|
||||
else if (new_mode & MM_MODEM_GSM_MODE_3G_ONLY)
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_ONLY;
|
||||
else if (new_mode & MM_MODEM_GSM_MODE_HSUPA)
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSUPA;
|
||||
|
||||
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_ANY;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
async_call_done (MMModem *modem, GError *error, gpointer user_data)
|
||||
{
|
||||
@@ -491,6 +557,14 @@ impl_gsm_modem_get_band (MMModemGsmNetwork *modem,
|
||||
mm_modem_gsm_network_get_band (modem, uint_call_done, context);
|
||||
}
|
||||
|
||||
static void
|
||||
impl_gsm_modem_set_allowed_modes (MMModemGsmNetwork *modem,
|
||||
MMModemGsmMode mode,
|
||||
DBusGMethodInvocation *context)
|
||||
{
|
||||
dbus_g_method_return (context);
|
||||
}
|
||||
|
||||
static void
|
||||
impl_gsm_modem_set_network_mode (MMModemGsmNetwork *modem,
|
||||
MMModemGsmMode mode,
|
||||
@@ -534,6 +608,17 @@ mm_modem_gsm_network_init (gpointer g_iface)
|
||||
if (initialized)
|
||||
return;
|
||||
|
||||
g_object_interface_install_property
|
||||
(g_iface,
|
||||
g_param_spec_uint (MM_MODEM_GSM_NETWORK_ACCESS_TECHNOLOGY,
|
||||
"Access Technology",
|
||||
"Current access technology in use when connected to "
|
||||
"a mobile network.",
|
||||
MM_MODEM_GSM_MODE_UNKNOWN,
|
||||
MM_MODEM_GSM_MODE_LAST,
|
||||
MM_MODEM_GSM_MODE_UNKNOWN,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
/* Signals */
|
||||
signals[SIGNAL_QUALITY] =
|
||||
g_signal_new ("signal-quality",
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* GNU General Public License for more details:
|
||||
*
|
||||
* Copyright (C) 2008 Novell, Inc.
|
||||
* Copyright (C) 2009 Red Hat, Inc.
|
||||
* Copyright (C) 2009 - 2010 Red Hat, Inc.
|
||||
*/
|
||||
|
||||
#ifndef MM_MODEM_GSM_NETWORK_H
|
||||
@@ -20,11 +20,21 @@
|
||||
#include <mm-modem.h>
|
||||
#include <mm-modem-gsm.h>
|
||||
|
||||
#define MM_MODEM_GSM_NETWORK_DBUS_INTERFACE "org.freedesktop.ModemManager.Modem.Gsm.Network"
|
||||
|
||||
#define MM_TYPE_MODEM_GSM_NETWORK (mm_modem_gsm_network_get_type ())
|
||||
#define MM_MODEM_GSM_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_MODEM_GSM_NETWORK, MMModemGsmNetwork))
|
||||
#define MM_IS_MODEM_GSM_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_MODEM_GSM_NETWORK))
|
||||
#define MM_MODEM_GSM_NETWORK_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MM_TYPE_MODEM_GSM_NETWORK, MMModemGsmNetwork))
|
||||
|
||||
#define MM_MODEM_GSM_NETWORK_ACCESS_TECHNOLOGY "access-technology"
|
||||
|
||||
typedef enum {
|
||||
MM_MODEM_GSM_NETWORK_PROP_FIRST = 0x1200,
|
||||
|
||||
MM_MODEM_GSM_NETWORK_PROP_ACCESS_TECHNOLOGY = MM_MODEM_GSM_NETWORK_PROP_FIRST,
|
||||
} MMModemGsmNetworkProp;
|
||||
|
||||
typedef enum {
|
||||
MM_MODEM_GSM_NETWORK_REG_STATUS_IDLE = 0,
|
||||
MM_MODEM_GSM_NETWORK_REG_STATUS_HOME = 1,
|
||||
@@ -161,4 +171,8 @@ void mm_modem_gsm_network_registration_info (MMModemGsmNetwork *self,
|
||||
void mm_modem_gsm_network_mode (MMModemGsmNetwork *self,
|
||||
MMModemGsmMode mode);
|
||||
|
||||
MMModemDeprecatedMode mm_modem_gsm_network_new_mode_to_old (MMModemGsmMode new_mode);
|
||||
|
||||
MMModemGsmMode mm_modem_gsm_network_old_mode_to_new (MMModemDeprecatedMode old_mode);
|
||||
|
||||
#endif /* MM_MODEM_GSM_NETWORK_H */
|
||||
|
||||
@@ -29,12 +29,27 @@ typedef enum {
|
||||
MM_MODEM_GSM_MODE_2G_ONLY = 0x00000080,
|
||||
MM_MODEM_GSM_MODE_3G_ONLY = 0x00000100,
|
||||
MM_MODEM_GSM_MODE_HSUPA = 0x00000200,
|
||||
MM_MODEM_GSM_MODE_HSPA = 0x00000210, /* HSDPA + HSUPA */
|
||||
MM_MODEM_GSM_MODE_GSM = 0x00000400,
|
||||
MM_MODEM_GSM_MODE_GSM_COMPACT = 0x00000800,
|
||||
|
||||
MM_MODEM_GSM_MODE_LAST = MM_MODEM_GSM_MODE_GSM_COMPACT
|
||||
} MMModemGsmMode;
|
||||
|
||||
typedef enum {
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_ANY = 0,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_GPRS,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_EDGE,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_UMTS,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSDPA,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_PREFERRED,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_PREFERRED,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_ONLY,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_3G_ONLY,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSUPA,
|
||||
MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSPA
|
||||
} MMModemDeprecatedMode;
|
||||
|
||||
typedef enum {
|
||||
MM_MODEM_GSM_BAND_UNKNOWN = 0x00000000,
|
||||
MM_MODEM_GSM_BAND_ANY = 0x00000001,
|
||||
|
||||
Reference in New Issue
Block a user