aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2015-02-23 10:25:14 -0600
committerDan Williams <dcbw@redhat.com>2015-02-23 10:25:14 -0600
commit9186e2aa39668c0d071f52d47d6a1aea087bc8a7 (patch)
tree677bc4ba80bf52f2dea241efb322b9de142c3a9f
parent37bda21a370bfd5c125a7093bec55dca3914af9b (diff)
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.
-rw-r--r--src/mm-iface-modem-3gpp.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mm-iface-modem-3gpp.c b/src/mm-iface-modem-3gpp.c
index 919954c5..199b880f 100644
--- a/src/mm-iface-modem-3gpp.c
+++ b/src/mm-iface-modem-3gpp.c
@@ -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;
}