aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2010-03-08 18:02:14 -0800
committerDan Williams <dcbw@redhat.com>2010-03-08 18:02:14 -0800
commitcdf9279ee8cb52d13242dbfad0e8c07c6d7270f3 (patch)
tree93890c08d31d0c7e038affbe1f24bd2363bca590 /src
parentc5a897d0ae1e4609cc2f9d3e127c1e50be9a84c1 (diff)
api+gsm: split out access technology
As with allowed modes, make things clearer and simpler by giving access technology it's own values.
Diffstat (limited to 'src')
-rw-r--r--src/mm-generic-gsm.c96
-rw-r--r--src/mm-generic-gsm.h2
-rw-r--r--src/mm-modem-gsm-network.c36
-rw-r--r--src/mm-modem-gsm-network.h2
-rw-r--r--src/mm-modem-gsm.h39
5 files changed, 80 insertions, 95 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c
index 4b1b65bf..b2794e21 100644
--- a/src/mm-generic-gsm.c
+++ b/src/mm-generic-gsm.c
@@ -72,7 +72,7 @@ typedef struct {
/* Index 0 for CREG, index 1 for CGREG */
gulong lac[2];
gulong cell_id[2];
- MMModemGsmMode access_tech;
+ MMModemGsmAccessTech act;
MMModemGsmNetworkRegStatus reg_status;
guint pending_reg_id;
@@ -110,7 +110,7 @@ static gboolean handle_reg_status_response (MMGenericGsm *self,
GString *response,
GError **error);
-static MMModemGsmMode etsi_act_to_mm_mode (gint act);
+static MMModemGsmAccessTech etsi_act_to_mm_act (gint act);
MMModem *
mm_generic_gsm_new (const char *device,
@@ -906,7 +906,7 @@ disable (MMModem *modem,
priv->lac[1] = 0;
priv->cell_id[0] = 0;
priv->cell_id[1] = 0;
- mm_generic_gsm_update_access_technology (self, MM_MODEM_GSM_MODE_UNKNOWN);
+ mm_generic_gsm_update_access_technology (self, MM_MODEM_GSM_ACCESS_TECH_UNKNOWN);
/* Close the secondary port if its open */
if (priv->secondary && mm_serial_port_is_open (priv->secondary))
@@ -1462,11 +1462,11 @@ reg_state_changed (MMSerialPort *port,
MMGenericGsmPrivate *priv = MM_GENERIC_GSM_GET_PRIVATE (self);
guint32 state = 0, idx;
gulong lac = 0, cell_id = 0;
- gint access_tech = -1;
+ gint act = -1;
gboolean cgreg = FALSE;
GError *error = NULL;
- if (!mm_gsm_parse_creg_response (match_info, &state, &lac, &cell_id, &access_tech, &cgreg, &error)) {
+ if (!mm_gsm_parse_creg_response (match_info, &state, &lac, &cell_id, &act, &cgreg, &error)) {
if (mm_options_debug ()) {
g_warning ("%s: error parsing unsolicited registration: %s",
__func__,
@@ -1491,8 +1491,8 @@ reg_state_changed (MMSerialPort *port,
priv->cell_id[idx] = cell_id;
/* 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));
+ if (act != -1)
+ mm_generic_gsm_update_access_technology (self, etsi_act_to_mm_act (act));
}
static gboolean
@@ -1561,7 +1561,7 @@ handle_reg_status_response (MMGenericGsm *self,
/* 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));
+ mm_generic_gsm_update_access_technology (self, etsi_act_to_mm_act (act));
if ((cgreg == FALSE) && status >= 0) {
/* Update cached registration status */
@@ -2192,78 +2192,56 @@ get_signal_quality (MMModemGsmNetwork *modem,
/*****************************************************************************/
typedef struct {
- MMModemGsmMode mode;
+ MMModemGsmAccessTech mm_act;
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 },
+ { MM_MODEM_GSM_ACCESS_TECH_GSM, 0 },
+ { MM_MODEM_GSM_ACCESS_TECH_GSM_COMPACT, 1 },
+ { MM_MODEM_GSM_ACCESS_TECH_UMTS, 2 },
+ { MM_MODEM_GSM_ACCESS_TECH_EDGE, 3 },
+ { MM_MODEM_GSM_ACCESS_TECH_HSDPA, 4 },
+ { MM_MODEM_GSM_ACCESS_TECH_HSUPA, 5 },
+ { MM_MODEM_GSM_ACCESS_TECH_HSPA, 6 },
+ { MM_MODEM_GSM_ACCESS_TECH_HSPA, 7 }, /* E-UTRAN/LTE => HSPA for now */
+ { MM_MODEM_GSM_ACCESS_TECH_UNKNOWN, -1 },
};
-static MMModemGsmMode
-etsi_act_to_mm_mode (gint act)
+static MMModemGsmAccessTech
+etsi_act_to_mm_act (gint act)
{
ModeEtsi *iter = &modes_table[0];
- while (iter->mode != MM_MODEM_GSM_MODE_UNKNOWN) {
+ while (iter->mm_act != MM_MODEM_GSM_ACCESS_TECH_UNKNOWN) {
if (iter->etsi_act == act)
- return iter->mode;
+ return iter->mm_act;
}
- 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;
+ return MM_MODEM_GSM_ACCESS_TECH_UNKNOWN;
}
void
mm_generic_gsm_update_access_technology (MMGenericGsm *modem,
- MMModemGsmMode mode)
+ MMModemGsmAccessTech act)
{
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));
- 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);
+ g_return_if_fail (act >= MM_MODEM_GSM_ACCESS_TECH_UNKNOWN && act <= MM_MODEM_GSM_ACCESS_TECH_LAST);
priv = MM_GENERIC_GSM_GET_PRIVATE (modem);
- if (mode != priv->access_tech) {
- priv->access_tech = mode;
+ if (act != priv->act) {
+ MMModemDeprecatedMode old_mode;
+
+ priv->act = act;
g_object_notify (G_OBJECT (modem), MM_MODEM_GSM_NETWORK_ACCESS_TECHNOLOGY);
/* Deprecated value */
- g_signal_emit_by_name (G_OBJECT (modem), "network-mode", mode);
+ old_mode = mm_modem_gsm_network_act_to_old_mode (act);
+ g_signal_emit_by_name (G_OBJECT (modem), "network-mode", old_mode);
}
}
@@ -2639,13 +2617,13 @@ simple_get_status (MMModemSimple *simple,
mm_modem_gsm_network_get_band (gsm, simple_status_got_band, properties);
mm_modem_gsm_network_get_registration_info (gsm, simple_status_got_reg_info, properties);
- if (priv->access_tech > -1) {
+ if (priv->act > -1) {
/* Deprecated key */
- old_mode = mm_modem_gsm_network_act_to_old_mode (priv->access_tech);
+ old_mode = mm_modem_gsm_network_act_to_old_mode (priv->act);
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));
+ g_hash_table_insert (properties, "access_technology", simple_uint_value (priv->act));
}
}
@@ -2704,7 +2682,7 @@ mm_generic_gsm_init (MMGenericGsm *self)
{
MMGenericGsmPrivate *priv = MM_GENERIC_GSM_GET_PRIVATE (self);
- priv->access_tech = MM_MODEM_GSM_MODE_UNKNOWN;
+ priv->act = MM_MODEM_GSM_ACCESS_TECH_UNKNOWN;
priv->reg_regex = mm_gsm_creg_regex_get (TRUE);
mm_properties_changed_signal_register_property (G_OBJECT (self),
@@ -2783,9 +2761,9 @@ get_property (GObject *object, guint prop_id,
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);
+ g_value_set_uint (value, priv->act);
else
- g_value_set_uint (value, MM_MODEM_GSM_MODE_UNKNOWN);
+ g_value_set_uint (value, MM_MODEM_GSM_ACCESS_TECH_UNKNOWN);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
diff --git a/src/mm-generic-gsm.h b/src/mm-generic-gsm.h
index 6fa86a59..13c996be 100644
--- a/src/mm-generic-gsm.h
+++ b/src/mm-generic-gsm.h
@@ -131,7 +131,7 @@ void mm_generic_gsm_update_allowed_mode (MMGenericGsm *modem,
* technology being used to communicate with the base station.
*/
void mm_generic_gsm_update_access_technology (MMGenericGsm *modem,
- MMModemGsmMode mode);
+ MMModemGsmAccessTech act);
void mm_generic_gsm_check_pin (MMGenericGsm *modem,
MMModemFn callback,
diff --git a/src/mm-modem-gsm-network.c b/src/mm-modem-gsm-network.c
index 72571c22..7f7b655b 100644
--- a/src/mm-modem-gsm-network.c
+++ b/src/mm-modem-gsm-network.c
@@ -93,27 +93,21 @@ mm_modem_gsm_network_old_mode_to_allowed (MMModemDeprecatedMode old_mode)
}
MMModemDeprecatedMode
-mm_modem_gsm_network_act_to_old_mode (MMModemGsmMode new_mode)
+mm_modem_gsm_network_act_to_old_mode (MMModemGsmAccessTech act)
{
/* Translate new mode into old deprecated mode */
- if (new_mode & MM_MODEM_GSM_MODE_GPRS)
+ if (act & MM_MODEM_GSM_ACCESS_TECH_GPRS)
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_GPRS;
- else if (new_mode & MM_MODEM_GSM_MODE_EDGE)
+ else if (act & MM_MODEM_GSM_ACCESS_TECH_EDGE)
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_EDGE;
- else if (new_mode & MM_MODEM_GSM_MODE_UMTS)
+ else if (act & MM_MODEM_GSM_ACCESS_TECH_UMTS)
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_UMTS;
- else if (new_mode & MM_MODEM_GSM_MODE_HSDPA)
+ else if (act & MM_MODEM_GSM_ACCESS_TECH_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)
+ else if (act & MM_MODEM_GSM_ACCESS_TECH_HSUPA)
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSUPA;
+ else if (act & MM_MODEM_GSM_ACCESS_TECH_HSPA)
+ return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_HSPA;
return MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_ANY;
}
@@ -563,13 +557,13 @@ static void
impl_gsm_modem_get_network_mode (MMModemGsmNetwork *modem,
DBusGMethodInvocation *context)
{
- MMModemGsmMode mode = MM_MODEM_GSM_MODE_ANY;
+ MMModemGsmAccessTech act = MM_MODEM_GSM_ACCESS_TECH_UNKNOWN;
/* DEPRECATED; it's now a property so it's quite easy to handle */
g_object_get (G_OBJECT (modem),
- MM_MODEM_GSM_NETWORK_ACCESS_TECHNOLOGY, &mode,
+ MM_MODEM_GSM_NETWORK_ACCESS_TECHNOLOGY, &act,
NULL);
- dbus_g_method_return (context, mm_modem_gsm_network_act_to_old_mode (mode));
+ dbus_g_method_return (context, mm_modem_gsm_network_act_to_old_mode (act));
}
static void
@@ -598,7 +592,7 @@ mm_modem_gsm_network_init (gpointer g_iface)
"Allowed network access mode",
MM_MODEM_GSM_ALLOWED_MODE_ANY,
MM_MODEM_GSM_ALLOWED_MODE_LAST,
- MM_MODEM_GSM_MODE_UNKNOWN,
+ MM_MODEM_GSM_ALLOWED_MODE_ANY,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
g_object_interface_install_property
@@ -607,9 +601,9 @@ mm_modem_gsm_network_init (gpointer g_iface)
"Access Technology",
"Current access technology in use when connected to "
"a mobile network.",
- MM_MODEM_GSM_MODE_UNKNOWN,
- G_MAXUINT32,
- MM_MODEM_GSM_MODE_UNKNOWN,
+ MM_MODEM_GSM_ACCESS_TECH_UNKNOWN,
+ MM_MODEM_GSM_ACCESS_TECH_LAST,
+ MM_MODEM_GSM_ACCESS_TECH_UNKNOWN,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
/* Signals */
diff --git a/src/mm-modem-gsm-network.h b/src/mm-modem-gsm-network.h
index 757d098b..a5157893 100644
--- a/src/mm-modem-gsm-network.h
+++ b/src/mm-modem-gsm-network.h
@@ -160,7 +160,7 @@ void mm_modem_gsm_network_registration_info (MMModemGsmNetwork *self,
const char *oper_name);
/* Private */
-MMModemDeprecatedMode mm_modem_gsm_network_act_to_old_mode (MMModemGsmMode new_mode);
+MMModemDeprecatedMode mm_modem_gsm_network_act_to_old_mode (MMModemGsmAccessTech act);
MMModemGsmAllowedMode mm_modem_gsm_network_old_mode_to_allowed (MMModemDeprecatedMode old_mode);
diff --git a/src/mm-modem-gsm.h b/src/mm-modem-gsm.h
index d10982b7..5f20b20d 100644
--- a/src/mm-modem-gsm.h
+++ b/src/mm-modem-gsm.h
@@ -45,18 +45,18 @@ typedef enum {
} MMModemGsmAllowedMode;
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;
+ MM_MODEM_GSM_ACCESS_TECH_UNKNOWN = 0,
+ MM_MODEM_GSM_ACCESS_TECH_GSM = 1,
+ MM_MODEM_GSM_ACCESS_TECH_GSM_COMPACT = 2,
+ MM_MODEM_GSM_ACCESS_TECH_GPRS = 3,
+ MM_MODEM_GSM_ACCESS_TECH_EDGE = 4, /* GSM w/EGPRS */
+ MM_MODEM_GSM_ACCESS_TECH_UMTS = 5, /* UTRAN */
+ MM_MODEM_GSM_ACCESS_TECH_HSDPA = 6, /* UTRAN w/HSDPA */
+ MM_MODEM_GSM_ACCESS_TECH_HSUPA = 7, /* UTRAN w/HSUPA */
+ MM_MODEM_GSM_ACCESS_TECH_HSPA = 8, /* UTRAN w/HSDPA and HSUPA */
+
+ MM_MODEM_GSM_ACCESS_TECH_LAST = MM_MODEM_GSM_ACCESS_TECH_HSPA
+} MMModemGsmAccessTech;
typedef enum {
MM_MODEM_GSM_BAND_UNKNOWN = 0x00000000,
@@ -77,5 +77,18 @@ typedef enum {
} MMModemGsmBand;
-#endif /* MM_MODEM_GSM_H */
+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;
+#endif /* MM_MODEM_GSM_H */