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