diff options
author | laforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2007-03-10 22:05:17 +0000 |
---|---|---|
committer | laforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2007-03-10 22:05:17 +0000 |
commit | 3026b93e266558671bd361b6c07546f8174974bc (patch) | |
tree | c579158bc0641847851a1369382d3dc250268ebc /src/gsmd/unsolicited.c | |
parent | 2797211645d452446cb7b329ee9d3d3a923f8520 (diff) |
* include stdio from talloc.h
* add new generic extended-response parser
* add operator cache, using ext-resp-parser
* add proper detection of supported %CPI modes and select highest available one
* add %CTZV to vendor_ti init string
git-svn-id: http://svn.openmoko.org/trunk/src/target/gsm@1316 99fdad57-331a-0410-800a-d7fa5415bdb3
Diffstat (limited to 'src/gsmd/unsolicited.c')
-rw-r--r-- | src/gsmd/unsolicited.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/gsmd/unsolicited.c b/src/gsmd/unsolicited.c index 82f45f4..c355c71 100644 --- a/src/gsmd/unsolicited.c +++ b/src/gsmd/unsolicited.c @@ -31,6 +31,7 @@ #include <gsmd/usock.h> #include <gsmd/event.h> +#include <gsmd/extrsp.h> #include <gsmd/ts0707.h> #include <gsmd/unsolicited.h> #include <gsmd/talloc.h> @@ -308,6 +309,28 @@ static int ctzv_parse(char *buf, int len, const char *param, return usock_evt_send(gsmd, ucmd, GSMD_EVT_TIMEZONE); } +static int copn_parse(char *buf, int len, const char *param, + struct gsmd *gsmd) +{ + struct gsm_extrsp *er = extrsp_parse(gsmd_tallocs, param); + int rc = 0; + + if (!er) + return -ENOMEM; + + extrsp_dump(er); + + if (er->num_tokens == 2 && + er->tokens[0].type == GSMD_ECMD_RTT_STRING && + er->tokens[1].type == GSMD_ECMD_RTT_STRING) + rc = gsmd_opname_add(gsmd, er->tokens[0].u.string, + er->tokens[1].u.string); + + talloc_free(er); + + return rc; +} + static const struct gsmd_unsolicit gsm0707_unsolicit[] = { { "RING", &ring_parse }, { "+CRING", &cring_parse }, @@ -320,6 +343,7 @@ static const struct gsmd_unsolicit gsm0707_unsolicit[] = { { "+CLIP", &clip_parse }, { "+COLP", &colp_parse }, { "+CTZV", &ctzv_parse }, /* Timezone */ + { "+COPN", &copn_parse }, /* operator names, treat as unsolicited */ /* { "+CKEV", &ckev_parse }, { "+CDEV", &cdev_parse }, |