diff options
author | Dan Williams <dcbw@redhat.com> | 2010-03-08 18:02:14 -0800 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2010-03-08 18:02:14 -0800 |
commit | cdf9279ee8cb52d13242dbfad0e8c07c6d7270f3 (patch) | |
tree | 93890c08d31d0c7e038affbe1f24bd2363bca590 /src | |
parent | c5a897d0ae1e4609cc2f9d3e127c1e50be9a84c1 (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.c | 96 | ||||
-rw-r--r-- | src/mm-generic-gsm.h | 2 | ||||
-rw-r--r-- | src/mm-modem-gsm-network.c | 36 | ||||
-rw-r--r-- | src/mm-modem-gsm-network.h | 2 | ||||
-rw-r--r-- | src/mm-modem-gsm.h | 39 |
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 */ |