diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-modem-helpers.c | 12 | ||||
-rw-r--r-- | src/mm-modem-helpers.h | 3 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/mm-modem-helpers.c b/src/mm-modem-helpers.c index e10fdd3c..3ec701e3 100644 --- a/src/mm-modem-helpers.c +++ b/src/mm-modem-helpers.c @@ -373,7 +373,7 @@ item_is_lac_not_stat (GMatchInfo *info, guint32 item) gboolean mm_gsm_parse_creg_response (GMatchInfo *info, - guint32 *out_reg_state, + MMModem3gppRegistrationState *out_reg_state, gulong *out_lac, gulong *out_ci, gint *out_act, @@ -485,8 +485,14 @@ mm_gsm_parse_creg_response (GMatchInfo *info, act = -1; } - *out_reg_state = (guint32) stat; - if (stat != 4) { + /* 'roaming' is the last valid state */ + if (stat > MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING) { + mm_warn ("Registration State '%lu' is unknown", stat); + stat = MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN; + } + + *out_reg_state = (MMModem3gppRegistrationState) stat; + if (stat != MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN) { /* Don't fill in lac/ci/act if the device's state is unknown */ *out_lac = lac; *out_ci = ci; diff --git a/src/mm-modem-helpers.h b/src/mm-modem-helpers.h index 0827abf2..ea125f40 100644 --- a/src/mm-modem-helpers.h +++ b/src/mm-modem-helpers.h @@ -37,7 +37,7 @@ GPtrArray *mm_gsm_creg_regex_get (gboolean solicited); void mm_gsm_creg_regex_destroy (GPtrArray *array); gboolean mm_gsm_parse_creg_response (GMatchInfo *info, - guint32 *out_reg_state, + MMModem3gppRegistrationState *out_reg_state, gulong *out_lac, gulong *out_ci, gint *out_act, @@ -86,4 +86,3 @@ gint cind_response_get_max (CindResponse *r); GByteArray *mm_parse_cind_query_response(const char *reply, GError **error); #endif /* MM_MODEM_HELPERS_H */ - |