diff options
author | Dan Williams <dcbw@redhat.com> | 2010-03-21 17:50:45 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2010-03-21 17:50:45 -0700 |
commit | 3b32e2a679f37b3913a12097581b065013d91f47 (patch) | |
tree | dc823b912463da51986d103fab47b4c9b930f7a7 /src/mm-modem-helpers.c | |
parent | 6598d2ef7f501feb799652db0ebaf25e4cba1a45 (diff) |
cdma: check for +SPSERVICE and $SPERI
Which are Sprint-specific commands which appear to be implemented by
various phones for getting access technology and roaming status.
Diffstat (limited to 'src/mm-modem-helpers.c')
-rw-r--r-- | src/mm-modem-helpers.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/mm-modem-helpers.c b/src/mm-modem-helpers.c index dd1b8c36..0a2bb623 100644 --- a/src/mm-modem-helpers.c +++ b/src/mm-modem-helpers.c @@ -432,6 +432,43 @@ mm_gsm_parse_creg_response (GMatchInfo *info, /*************************************************************************/ +gboolean +mm_cdma_parse_spservice_response (const char *reply, + MMModemCdmaRegistrationState *out_cdma_1x_state, + MMModemCdmaRegistrationState *out_evdo_state) +{ + const char *p; + + g_return_val_if_fail (reply != NULL, FALSE); + g_return_val_if_fail (out_cdma_1x_state != NULL, FALSE); + g_return_val_if_fail (out_evdo_state != NULL, FALSE); + + p = mm_strip_tag (reply, "+SPSERVICE:"); + if (!isdigit (*p)) + return FALSE; + + switch (atoi (p)) { + case 0: /* no service */ + *out_cdma_1x_state = MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN; + *out_evdo_state = MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN; + break; + case 1: /* 1xRTT */ + *out_cdma_1x_state = MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED; + *out_evdo_state = MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN; + break; + case 2: /* EVDO rev 0 */ + case 3: /* EVDO rev A */ + *out_cdma_1x_state = MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN; + *out_evdo_state = MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED; + break; + default: + return FALSE; + } + return TRUE; +} + +/*************************************************************************/ + const char * mm_strip_tag (const char *str, const char *cmd) { |