r3519 - in trunk/src/target/gsm: include/gsmd include/libgsmd src/gsmd src/libgsmd src/util
tick at sita.openmoko.org
tick at sita.openmoko.org
Tue Nov 27 09:25:07 CET 2007
Author: tick
Date: 2007-11-27 09:24:57 +0100 (Tue, 27 Nov 2007)
New Revision: 3519
Modified:
trunk/src/target/gsm/include/gsmd/usock.h
trunk/src/target/gsm/include/libgsmd/misc.h
trunk/src/target/gsm/include/libgsmd/phonebook.h
trunk/src/target/gsm/src/gsmd/usock.c
trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c
trunk/src/target/gsm/src/libgsmd/libgsmd_phonebook.c
trunk/src/target/gsm/src/util/shell.c
Log:
gsmd: Refactorying get_imsi from PHONEBOOK to PHONE (tick)
Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h 2007-11-27 03:29:59 UTC (rev 3518)
+++ trunk/src/target/gsm/include/gsmd/usock.h 2007-11-27 08:24:57 UTC (rev 3519)
@@ -56,6 +56,7 @@
enum gsmd_msg_phone {
GSMD_PHONE_POWERUP = 1,
GSMD_PHONE_POWERDOWN = 2,
+ GSMD_PHONE_GET_IMSI = 3,
};
enum gsmd_msg_modem {
@@ -255,7 +256,6 @@
GSMD_PHONEBOOK_SET_STORAGE = 8,
GSMD_PHONEBOOK_RETRIEVE_READRG = 9,
GSMD_PHONEBOOK_RETRIEVE_FIND = 10,
- GSMD_PHONEBOOK_GET_IMSI = 11,
};
/* Type-of-Address, Numbering-Plan-Identification field, GSM 03.40, 9.1.2.5 */
Modified: trunk/src/target/gsm/include/libgsmd/misc.h
===================================================================
--- trunk/src/target/gsm/include/libgsmd/misc.h 2007-11-27 03:29:59 UTC (rev 3518)
+++ trunk/src/target/gsm/include/libgsmd/misc.h 2007-11-27 08:24:57 UTC (rev 3519)
@@ -77,5 +77,7 @@
/* GPRS related functions */
/* TBD */
+/* Retrieve IMSI information */
+extern int lgsm_get_imsi(struct lgsm_handle *lh);
#endif
Modified: trunk/src/target/gsm/include/libgsmd/phonebook.h
===================================================================
--- trunk/src/target/gsm/include/libgsmd/phonebook.h 2007-11-27 03:29:59 UTC (rev 3518)
+++ trunk/src/target/gsm/include/libgsmd/phonebook.h 2007-11-27 08:24:57 UTC (rev 3519)
@@ -99,7 +99,4 @@
/* Retrieve the records of FIND request */
extern int lgsm_pb_retrieve_find(struct lgsm_handle *lh, int num);
-/* Retrieve IMSI information */
-extern int lgsm_get_imsi(struct lgsm_handle *lh); // TODO this needs to go into a SIM specific file
-
#endif
Modified: trunk/src/target/gsm/src/gsmd/usock.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/usock.c 2007-11-27 03:29:59 UTC (rev 3518)
+++ trunk/src/target/gsm/src/gsmd/usock.c 2007-11-27 08:24:57 UTC (rev 3519)
@@ -263,6 +263,25 @@
return 0;
}
+static int get_imsi_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
+{
+ struct gsmd_user *gu = ctx;
+ struct gsmd_ucmd *ucmd;
+
+ DEBUGP("resp: %s\n", resp);
+
+ ucmd = gsmd_ucmd_fill(strlen(resp)+1, GSMD_MSG_PHONE,
+ GSMD_PHONE_GET_IMSI, 0);
+ if (!ucmd)
+ return -ENOMEM;
+
+ strcpy(ucmd->buf, resp);
+
+ usock_cmd_enqueue(ucmd, gu);
+
+ return 0;
+}
+
static int usock_rcv_phone(struct gsmd_user *gu, struct gsmd_msg_hdr *gph,
int len)
{
@@ -279,9 +298,14 @@
&null_cmd_cb, gu, 0, NULL);
gu->gsmd->dev_state.on = 0;
break;
+ case GSMD_PHONE_GET_IMSI:
+ cmd = atcmd_fill("AT+CIMI", 7 + 1, &get_imsi_cb, gu, 0, NULL);
+ break;
+
default:
return -EINVAL;
}
+
if (!cmd)
return -ENOMEM;
@@ -961,26 +985,7 @@
return 0;
}
-static int get_imsi_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
-{
- struct gsmd_user *gu = ctx;
- struct gsmd_ucmd *ucmd;
- DEBUGP("resp: %s\n", resp);
-
- ucmd = gsmd_ucmd_fill(strlen(resp)+1, GSMD_MSG_PHONEBOOK,
- GSMD_PHONEBOOK_GET_IMSI, 0);
- if (!ucmd)
- return -ENOMEM;
-
- strcpy(ucmd->buf, resp);
-
- usock_cmd_enqueue(ucmd, gu);
-
- return 0;
-}
-
-
static int usock_rcv_phonebook(struct gsmd_user *gu,
struct gsmd_msg_hdr *gph,int len)
{
@@ -1156,9 +1161,6 @@
usock_cmd_enqueue(ucmd, gu);
break;
- case GSMD_PHONEBOOK_GET_IMSI:
- cmd = atcmd_fill("AT+CIMI", 7 + 1, &get_imsi_cb, gu, 0, NULL);
- break;
default:
return -EINVAL;
Modified: trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c
===================================================================
--- trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c 2007-11-27 03:29:59 UTC (rev 3518)
+++ trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c 2007-11-27 08:24:57 UTC (rev 3519)
@@ -44,3 +44,9 @@
return lgsm_send_simple(lh, GSMD_MSG_PHONE, type);
}
+
+int lgsm_get_imsi(struct lgsm_handle *lh)
+{
+ return lgsm_send_simple(lh, GSMD_MSG_PHONE, GSMD_PHONE_GET_IMSI);
+}
+
Modified: trunk/src/target/gsm/src/libgsmd/libgsmd_phonebook.c
===================================================================
--- trunk/src/target/gsm/src/libgsmd/libgsmd_phonebook.c 2007-11-27 03:29:59 UTC (rev 3518)
+++ trunk/src/target/gsm/src/libgsmd/libgsmd_phonebook.c 2007-11-27 08:24:57 UTC (rev 3519)
@@ -246,8 +246,4 @@
return 0;
}
-int lgsm_get_imsi(struct lgsm_handle *lh)
-{
- return lgsm_send_simple(lh, GSMD_MSG_PHONEBOOK, GSMD_PHONEBOOK_GET_IMSI);
-}
Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c 2007-11-27 03:29:59 UTC (rev 3518)
+++ trunk/src/target/gsm/src/util/shell.c 2007-11-27 08:24:57 UTC (rev 3519)
@@ -131,11 +131,6 @@
nFIND = 0;
break;
- case GSMD_PHONEBOOK_GET_IMSI:
- payload = (char *)gmh + sizeof(*gmh);
- printf("imsi <%s>\n", payload);
- pending_responses --;
- break;
default:
return -EINVAL;
}
@@ -349,6 +344,20 @@
}
}
+static int phone_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh) {
+ char *payload;
+ switch (gmh->msg_subtype) {
+ case GSMD_PHONE_GET_IMSI:
+ payload = (char *)gmh + sizeof(*gmh);
+ printf("imsi <%s>\n", payload);
+ pending_responses --;
+ break;
+ default:
+ return -EINVAL;
+ }
+ return 0;
+}
+
static int shell_help(void)
{
printf( "\tA\tAnswer incoming call\n"
@@ -405,6 +414,7 @@
lgsm_register_handler(lgsmh, GSMD_MSG_PHONEBOOK, &pb_msghandler);
lgsm_register_handler(lgsmh, GSMD_MSG_SMS, &sms_msghandler);
lgsm_register_handler(lgsmh, GSMD_MSG_NETWORK, &net_msghandler);
+ lgsm_register_handler(lgsmh, GSMD_MSG_PHONE, &phone_msghandler);
fcntl(0, F_SETFD, O_NONBLOCK);
fcntl(gsm_fd, F_SETFD, O_NONBLOCK);
More information about the commitlog
mailing list