iface-modem-3gpp: used DENIED registration state if others are UNKNOWN

If all other registration states are UNKNOWN, use a registration state
of DENIED as the global modem state.
This commit is contained in:
Dan Williams
2015-02-23 10:25:14 -06:00
parent 37bda21a37
commit 9186e2aa39
+14 -4
View File
@@ -130,24 +130,34 @@ get_consolidated_reg_state (RegistrationStateContext *ctx)
if (ctx->cs == MM_MODEM_3GPP_REGISTRATION_STATE_HOME ||
ctx->cs == MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING)
return ctx->cs;
if (ctx->ps == MM_MODEM_3GPP_REGISTRATION_STATE_HOME ||
ctx->ps == MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING)
return ctx->ps;
if (ctx->eps == MM_MODEM_3GPP_REGISTRATION_STATE_HOME ||
ctx->eps == MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING)
return ctx->eps;
if (ctx->cs == MM_MODEM_3GPP_REGISTRATION_STATE_SEARCHING)
return ctx->cs;
if (ctx->ps == MM_MODEM_3GPP_REGISTRATION_STATE_SEARCHING)
return ctx->ps;
if (ctx->eps == MM_MODEM_3GPP_REGISTRATION_STATE_SEARCHING)
return ctx->eps;
/* If one state is DENIED and the others are UNKNOWN, use DENIED */
if (ctx->cs == MM_MODEM_3GPP_REGISTRATION_STATE_DENIED &&
ctx->ps == MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN &&
ctx->eps == MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN)
return ctx->cs;
if (ctx->cs == MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN &&
ctx->ps == MM_MODEM_3GPP_REGISTRATION_STATE_DENIED &&
ctx->eps == MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN)
return ctx->ps;
if (ctx->cs == MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN &&
ctx->ps == MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN &&
ctx->eps == MM_MODEM_3GPP_REGISTRATION_STATE_DENIED)
return ctx->eps;
return ctx->cs;
}