iface-modem-cdma: provide separate method to update access tech
This commit is contained in:
@@ -5794,6 +5794,10 @@ run_cdma_registration_checks_ready (MMBroadbandModem *self,
|
||||
mm_iface_modem_cdma_update_evdo_registration_state (
|
||||
MM_IFACE_MODEM_CDMA (self),
|
||||
MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
|
||||
mm_iface_modem_cdma_update_access_technologies (
|
||||
MM_IFACE_MODEM_CDMA (self),
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN);
|
||||
|
||||
g_simple_async_result_take_error (ctx->result, error);
|
||||
register_in_cdma_network_context_complete_and_free (ctx);
|
||||
return;
|
||||
@@ -5822,6 +5826,9 @@ run_cdma_registration_checks_ready (MMBroadbandModem *self,
|
||||
mm_iface_modem_cdma_update_evdo_registration_state (
|
||||
MM_IFACE_MODEM_CDMA (self),
|
||||
MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN);
|
||||
mm_iface_modem_cdma_update_access_technologies (
|
||||
MM_IFACE_MODEM_CDMA (self),
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN);
|
||||
g_simple_async_result_take_error (
|
||||
ctx->result,
|
||||
mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_NETWORK_TIMEOUT));
|
||||
|
||||
+44
-22
@@ -846,6 +846,23 @@ registration_check_step (RunRegistrationChecksContext *ctx)
|
||||
mm_iface_modem_cdma_update_evdo_registration_state (ctx->self,
|
||||
ctx->evdo_state);
|
||||
|
||||
/* Update access technologies.
|
||||
* TODO: proper EV-DO revision reporting */
|
||||
{
|
||||
MMModemAccessTechnology act = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN;
|
||||
|
||||
if (ctx->cdma1x_state == MM_MODEM_CDMA_REGISTRATION_STATE_HOME ||
|
||||
ctx->cdma1x_state == MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING ||
|
||||
ctx->cdma1x_state == MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED)
|
||||
act |= MM_IFACE_MODEM_CDMA_ALL_CDMA1X_ACCESS_TECHNOLOGIES_MASK;
|
||||
|
||||
if (ctx->evdo_state == MM_MODEM_CDMA_REGISTRATION_STATE_HOME ||
|
||||
ctx->evdo_state == MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING ||
|
||||
ctx->evdo_state == MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED)
|
||||
act |= MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK;
|
||||
mm_iface_modem_cdma_update_access_technologies (MM_IFACE_MODEM_CDMA (ctx->self), act);
|
||||
}
|
||||
|
||||
g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
|
||||
run_registration_checks_context_complete_and_free (ctx);
|
||||
return;
|
||||
@@ -936,17 +953,35 @@ mm_iface_modem_cdma_run_registration_checks (MMIfaceModemCdma *self,
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
#define ALL_CDMA_ACCESS_TECHNOLOGIES_MASK \
|
||||
(ALL_CDMA_CDMA1X_ACCESS_TECHNOLOGIES_MASK | \
|
||||
ALL_CDMA_EVDO_ACCESS_TECHNOLOGIES_MASK)
|
||||
void
|
||||
mm_iface_modem_cdma_update_access_technologies (MMIfaceModemCdma *self,
|
||||
MMModemAccessTechnology access_tech)
|
||||
{
|
||||
MMModemCdmaRegistrationState cdma1x_state;
|
||||
MMModemCdmaRegistrationState evdo_state;
|
||||
|
||||
#define ALL_CDMA_EVDO_ACCESS_TECHNOLOGIES_MASK \
|
||||
(MM_MODEM_ACCESS_TECHNOLOGY_EVDO0 | \
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_EVDOA | \
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_EVDOB)
|
||||
g_object_get (self,
|
||||
MM_IFACE_MODEM_CDMA_CDMA1X_REGISTRATION_STATE, &cdma1x_state,
|
||||
MM_IFACE_MODEM_CDMA_EVDO_REGISTRATION_STATE, &evdo_state,
|
||||
NULL);
|
||||
|
||||
#define ALL_CDMA_CDMA1X_ACCESS_TECHNOLOGIES_MASK \
|
||||
(MM_MODEM_ACCESS_TECHNOLOGY_1XRTT)
|
||||
/* Even if registration state didn't change, report access technology,
|
||||
* but only if something valid to report */
|
||||
if (cdma1x_state == MM_MODEM_CDMA_REGISTRATION_STATE_HOME ||
|
||||
cdma1x_state == MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING ||
|
||||
cdma1x_state == MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED ||
|
||||
evdo_state == MM_MODEM_CDMA_REGISTRATION_STATE_HOME ||
|
||||
evdo_state == MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING ||
|
||||
evdo_state == MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED) {
|
||||
if (access_tech != MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN)
|
||||
mm_iface_modem_update_access_technologies (MM_IFACE_MODEM (self),
|
||||
access_tech,
|
||||
MM_IFACE_MODEM_CDMA_ALL_ACCESS_TECHNOLOGIES_MASK);
|
||||
} else
|
||||
mm_iface_modem_update_access_technologies (MM_IFACE_MODEM (self),
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN,
|
||||
MM_IFACE_MODEM_CDMA_ALL_ACCESS_TECHNOLOGIES_MASK);
|
||||
}
|
||||
|
||||
void
|
||||
mm_iface_modem_cdma_update_evdo_registration_state (MMIfaceModemCdma *self,
|
||||
@@ -977,19 +1012,12 @@ mm_iface_modem_cdma_update_evdo_registration_state (MMIfaceModemCdma *self,
|
||||
SUBSYSTEM_EVDO,
|
||||
MM_MODEM_STATE_REGISTERED,
|
||||
MM_MODEM_STATE_CHANGE_REASON_UNKNOWN);
|
||||
/* TODO: report proper EVDO revision (0/A/B) */
|
||||
mm_iface_modem_update_access_technologies (MM_IFACE_MODEM (self),
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_EVDO0,
|
||||
ALL_CDMA_EVDO_ACCESS_TECHNOLOGIES_MASK);
|
||||
break;
|
||||
case MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN:
|
||||
mm_iface_modem_update_subsystem_state (MM_IFACE_MODEM (self),
|
||||
SUBSYSTEM_EVDO,
|
||||
MM_MODEM_STATE_ENABLED,
|
||||
MM_MODEM_STATE_CHANGE_REASON_UNKNOWN);
|
||||
mm_iface_modem_update_access_technologies (MM_IFACE_MODEM (self),
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN,
|
||||
ALL_CDMA_EVDO_ACCESS_TECHNOLOGIES_MASK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1030,9 +1058,6 @@ mm_iface_modem_cdma_update_cdma1x_registration_state (MMIfaceModemCdma *self,
|
||||
SUBSYSTEM_CDMA1X,
|
||||
MM_MODEM_STATE_REGISTERED,
|
||||
MM_MODEM_STATE_CHANGE_REASON_UNKNOWN);
|
||||
mm_iface_modem_update_access_technologies (MM_IFACE_MODEM (self),
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_1XRTT,
|
||||
ALL_CDMA_CDMA1X_ACCESS_TECHNOLOGIES_MASK);
|
||||
break;
|
||||
case MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN:
|
||||
if (mm_gdbus_modem_cdma_get_sid (skeleton) != MM_MODEM_CDMA_SID_UNKNOWN)
|
||||
@@ -1044,9 +1069,6 @@ mm_iface_modem_cdma_update_cdma1x_registration_state (MMIfaceModemCdma *self,
|
||||
SUBSYSTEM_CDMA1X,
|
||||
MM_MODEM_STATE_ENABLED,
|
||||
MM_MODEM_STATE_CHANGE_REASON_UNKNOWN);
|
||||
mm_iface_modem_update_access_technologies (MM_IFACE_MODEM (self),
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN,
|
||||
ALL_CDMA_CDMA1X_ACCESS_TECHNOLOGIES_MASK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,12 +34,18 @@
|
||||
#define MM_IFACE_MODEM_CDMA_EVDO_NETWORK_SUPPORTED "iface-modem-cdma-evdo-network-supported"
|
||||
#define MM_IFACE_MODEM_CDMA_CDMA1X_NETWORK_SUPPORTED "iface-modem-cdma-cdma1x-network-supported"
|
||||
|
||||
#define MM_IFACE_MODEM_CDMA_ALL_ACCESS_TECHNOLOGIES_MASK \
|
||||
(MM_MODEM_ACCESS_TECHNOLOGY_1XRTT | \
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_EVDO0 | \
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_EVDOA | \
|
||||
#define MM_IFACE_MODEM_CDMA_ALL_ACCESS_TECHNOLOGIES_MASK \
|
||||
(MM_IFACE_MODEM_CDMA_ALL_CDMA1X_ACCESS_TECHNOLOGIES_MASK | \
|
||||
MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK)
|
||||
|
||||
#define MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK \
|
||||
(MM_MODEM_ACCESS_TECHNOLOGY_EVDO0 | \
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_EVDOA | \
|
||||
MM_MODEM_ACCESS_TECHNOLOGY_EVDOB)
|
||||
|
||||
#define MM_IFACE_MODEM_CDMA_ALL_CDMA1X_ACCESS_TECHNOLOGIES_MASK \
|
||||
(MM_MODEM_ACCESS_TECHNOLOGY_1XRTT)
|
||||
|
||||
typedef struct _MMIfaceModemCdma MMIfaceModemCdma;
|
||||
|
||||
struct _MMIfaceModemCdma {
|
||||
@@ -244,13 +250,16 @@ gboolean mm_iface_modem_cdma_disable_finish (MMIfaceModemCdma *self,
|
||||
/* Shutdown CDMA interface */
|
||||
void mm_iface_modem_cdma_shutdown (MMIfaceModemCdma *self);
|
||||
|
||||
/* Objects implementing this interface can report new registration states. */
|
||||
/* Objects implementing this interface can report new registration states and
|
||||
* access technologies */
|
||||
void mm_iface_modem_cdma_update_cdma1x_registration_state (MMIfaceModemCdma *self,
|
||||
MMModemCdmaRegistrationState state,
|
||||
guint sid,
|
||||
guint nid);
|
||||
void mm_iface_modem_cdma_update_evdo_registration_state (MMIfaceModemCdma *self,
|
||||
MMModemCdmaRegistrationState state);
|
||||
void mm_iface_modem_cdma_update_access_technologies (MMIfaceModemCdma *self,
|
||||
MMModemAccessTechnology access_tech);
|
||||
|
||||
/* Run all registration checks */
|
||||
void mm_iface_modem_cdma_run_registration_checks (MMIfaceModemCdma *self,
|
||||
|
||||
Reference in New Issue
Block a user