r3876 - in trunk/src/target/gsm: include/gsmd src/gsmd src/libgsmd src/util
erin_yueh at sita.openmoko.org
erin_yueh at sita.openmoko.org
Fri Jan 18 10:15:40 CET 2008
Author: erin_yueh
Date: 2008-01-18 10:15:33 +0100 (Fri, 18 Jan 2008)
New Revision: 3876
Modified:
trunk/src/target/gsm/include/gsmd/usock.h
trunk/src/target/gsm/src/gsmd/usock.c
trunk/src/target/gsm/src/libgsmd/libgsmd_network.c
trunk/src/target/gsm/src/util/shell.c
Log:
gsmd: add 'lgsm_open_n_get' to retrieve the current country code (Sean Chiang)
Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h 2008-01-17 22:40:29 UTC (rev 3875)
+++ trunk/src/target/gsm/include/gsmd/usock.h 2008-01-18 09:15:33 UTC (rev 3876)
@@ -153,14 +153,15 @@
GSMD_NETWORK_VMAIL_GET = 3,
GSMD_NETWORK_VMAIL_SET = 4,
GSMD_NETWORK_OPER_GET = 5,
- GSMD_NETWORK_OPER_LIST = 6,
- GSMD_NETWORK_CIND_GET = 7,
- GSMD_NETWORK_DEREGISTER = 8,
- GSMD_NETWORK_GET_NUMBER = 9,
- GSMD_NETWORK_PREF_LIST = 10,
- GSMD_NETWORK_PREF_DEL = 11,
- GSMD_NETWORK_PREF_ADD = 12,
- GSMD_NETWORK_PREF_SPACE = 13,
+ GSMD_NETWORK_OPER_N_GET = 6,
+ GSMD_NETWORK_OPER_LIST = 7,
+ GSMD_NETWORK_CIND_GET = 8,
+ GSMD_NETWORK_DEREGISTER = 9,
+ GSMD_NETWORK_GET_NUMBER = 10,
+ GSMD_NETWORK_PREF_LIST = 11,
+ GSMD_NETWORK_PREF_DEL = 12,
+ GSMD_NETWORK_PREF_ADD = 13,
+ GSMD_NETWORK_PREF_SPACE = 14,
};
enum gsmd_msg_sms {
Modified: trunk/src/target/gsm/src/gsmd/usock.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/usock.c 2008-01-17 22:40:29 UTC (rev 3875)
+++ trunk/src/target/gsm/src/gsmd/usock.c 2008-01-18 09:15:33 UTC (rev 3876)
@@ -767,6 +767,46 @@
return ret;
}
+static int network_oper_n_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
+{
+ struct gsmd_user *gu = ctx;
+ int format, s, ret;
+ char buf[16+1] = {'\0'};
+ struct gsm_extrsp *er;
+
+ er = extrsp_parse(cmd, resp);
+
+ if ( !er )
+ return -ENOMEM;
+
+ //extrsp_dump(er);
+
+ /* Format: <mode>[,<format>,<oper>] */
+ if ( er->num_tokens == 1 &&
+ er->tokens[0].type == GSMD_ECMD_RTT_NUMERIC ) {
+
+ /* In case we're not registered, return an empty string */
+ buf[0] = '\0';
+ }
+ else if ( er->num_tokens == 3 &&
+ er->tokens[0].type == GSMD_ECMD_RTT_NUMERIC &&
+ er->tokens[1].type == GSMD_ECMD_RTT_NUMERIC &&
+ er->tokens[2].type == GSMD_ECMD_RTT_STRING ) {
+
+
+ strcpy(buf, er->tokens[2].u.string);
+ }
+ else {
+ DEBUGP("Invalid Input : Parse error\n");
+ return -EINVAL;
+ }
+
+ talloc_free(er);
+
+ return gsmd_ucmd_submit(gu, GSMD_MSG_NETWORK, GSMD_NETWORK_OPER_N_GET,
+ cmd->id, sizeof(buf), buf);
+}
+
static int network_opers_parse(const char *str, struct gsmd_msg_oper **out)
{
int len = 0;
@@ -980,6 +1020,12 @@
&null_cmd_cb, gu, 0, NULL));
cmd = atcmd_fill("AT+COPS?", 8+1, &network_oper_cb, gu, 0, NULL);
break;
+ case GSMD_NETWORK_OPER_N_GET:
+ /* Set numeric format */
+ atcmd_submit(gu->gsmd, atcmd_fill("AT+COPS=3,2", 11+1,
+ &null_cmd_cb, gu, 0, NULL));
+ cmd = atcmd_fill("AT+COPS?", 8+1, &network_oper_n_cb, gu, 0, NULL);
+ break;
case GSMD_NETWORK_OPER_LIST:
cmd = atcmd_fill("AT+COPS=?", 9+1, &network_opers_cb, gu, 0, NULL);
break;
Modified: trunk/src/target/gsm/src/libgsmd/libgsmd_network.c
===================================================================
--- trunk/src/target/gsm/src/libgsmd/libgsmd_network.c 2008-01-17 22:40:29 UTC (rev 3875)
+++ trunk/src/target/gsm/src/libgsmd/libgsmd_network.c 2008-01-18 09:15:33 UTC (rev 3876)
@@ -46,6 +46,11 @@
return lgsm_send_simple(lh, GSMD_MSG_NETWORK, GSMD_NETWORK_OPER_GET);
}
+int lgsm_oper_n_get(struct lgsm_handle *lh)
+{
+ return lgsm_send_simple(lh, GSMD_MSG_NETWORK, GSMD_NETWORK_OPER_N_GET);
+}
+
int lgsm_opers_get(struct lgsm_handle *lh)
{
return lgsm_send_simple(lh, GSMD_MSG_NETWORK, GSMD_NETWORK_OPER_LIST);
Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c 2008-01-17 22:40:29 UTC (rev 3875)
+++ trunk/src/target/gsm/src/util/shell.c 2008-01-18 09:15:33 UTC (rev 3876)
@@ -320,6 +320,7 @@
pending_responses --;
break;
case GSMD_NETWORK_OPER_GET:
+ case GSMD_NETWORK_OPER_N_GET:
if (oper[0])
printf("Our current operator is %s\n", oper);
else
@@ -500,6 +501,7 @@
"\tR\tRegister to given operator (R=number)\n"
"\tU\tUnregister from netowrk\n"
"\tP\tPrint current operator\n"
+ "\tN\tPrint current operator in numeric\n"
"\tL\tList available operators\n"
"\tQ\tRead signal quality\n"
"\tS\tSleep (S[=second], default 5)\n"
@@ -634,6 +636,10 @@
printf("Read current opername\n");
lgsm_oper_get(lgsmh);
pending_responses ++;
+ } else if (!strcmp(buf, "N")) {
+ printf("Read current opername in numeric format\n");
+ lgsm_oper_n_get(lgsmh);
+ pending_responses ++;
} else if (!strcmp(buf, "L")) {
printf("List operators\n");
lgsm_opers_get(lgsmh);
More information about the commitlog
mailing list