summaryrefslogtreecommitdiff
path: root/src/gsmd/unsolicited.c
diff options
context:
space:
mode:
authorlaforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3>2007-03-10 22:05:17 +0000
committerlaforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3>2007-03-10 22:05:17 +0000
commit3026b93e266558671bd361b6c07546f8174974bc (patch)
treec579158bc0641847851a1369382d3dc250268ebc /src/gsmd/unsolicited.c
parent2797211645d452446cb7b329ee9d3d3a923f8520 (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.c24
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 },
personal git repositories of Harald Welte. Your mileage may vary