diff options
author | Dan Williams <dcbw@redhat.com> | 2015-02-23 10:25:14 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2015-02-23 10:25:14 -0600 |
commit | 9186e2aa39668c0d071f52d47d6a1aea087bc8a7 (patch) | |
tree | 677bc4ba80bf52f2dea241efb322b9de142c3a9f | |
parent | 37bda21a370bfd5c125a7093bec55dca3914af9b (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.c | 18 |
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; } |