r3621 - in trunk/src/target/gsm: include/gsmd include/libgsmd src/gsmd src/libgsmd src/util

erin_yueh at sita.openmoko.org erin_yueh at sita.openmoko.org
Mon Dec 10 07:36:46 CET 2007


Author: erin_yueh
Date: 2007-12-10 07:36:38 +0100 (Mon, 10 Dec 2007)
New Revision: 3621

Modified:
   trunk/src/target/gsm/include/gsmd/usock.h
   trunk/src/target/gsm/include/libgsmd/misc.h
   trunk/src/target/gsm/src/gsmd/usock.c
   trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c
   trunk/src/target/gsm/src/util/shell.c
Log:
gsmd: Bug 1082 - PIN Status Missing (Erin Yueh)


Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h	2007-12-10 03:41:33 UTC (rev 3620)
+++ trunk/src/target/gsm/include/gsmd/usock.h	2007-12-10 06:36:38 UTC (rev 3621)
@@ -95,6 +95,7 @@
 	GSMD_PHONE_POWERUP	= 1,
 	GSMD_PHONE_POWERDOWN	= 2,
 	GSMD_PHONE_GET_IMSI     = 3,
+	GSMD_PIN_GET_STATUS     = 4,
 };
 
 enum gsmd_msg_modem {

Modified: trunk/src/target/gsm/include/libgsmd/misc.h
===================================================================
--- trunk/src/target/gsm/include/libgsmd/misc.h	2007-12-10 03:41:33 UTC (rev 3620)
+++ trunk/src/target/gsm/include/libgsmd/misc.h	2007-12-10 06:36:38 UTC (rev 3621)
@@ -79,5 +79,6 @@
 
 /* Retrieve IMSI information */
 extern int lgsm_get_imsi(struct lgsm_handle *lh);
-
+/* Get PIN status information */
+extern int lgsm_pin_status(struct lgsm_handle *lh);
 #endif

Modified: trunk/src/target/gsm/src/gsmd/usock.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/usock.c	2007-12-10 03:41:33 UTC (rev 3620)
+++ trunk/src/target/gsm/src/gsmd/usock.c	2007-12-10 06:36:38 UTC (rev 3621)
@@ -383,6 +383,14 @@
 			cmd->id, strlen(resp) + 1, resp);
 }
 
+static int get_cpin_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
+{
+	DEBUGP("resp: %s\n", resp);
+
+	return gsmd_ucmd_submit(ctx, GSMD_MSG_PHONE, GSMD_PIN_GET_STATUS,
+			cmd->id, strlen(resp) + 1, resp);
+}
+
 static int usock_rcv_phone(struct gsmd_user *gu, struct gsmd_msg_hdr *gph, 
 			   int len)
 {
@@ -402,7 +410,10 @@
 	case GSMD_PHONE_GET_IMSI:
 		cmd = atcmd_fill("AT+CIMI", 7 + 1, &get_imsi_cb, gu, 0, NULL);
 		break;
-
+		
+	case GSMD_PIN_GET_STATUS:
+		cmd = atcmd_fill("AT+CPIN?", 8 + 1, &get_cpin_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-12-10 03:41:33 UTC (rev 3620)
+++ trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c	2007-12-10 06:36:38 UTC (rev 3621)
@@ -50,3 +50,7 @@
 	return lgsm_send_simple(lh, GSMD_MSG_PHONE, GSMD_PHONE_GET_IMSI);
 }
 
+int lgsm_pin_status(struct lgsm_handle *lh)
+{
+	return lgsm_send_simple(lh, GSMD_MSG_PHONE, GSMD_PIN_GET_STATUS);
+}

Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c	2007-12-10 03:41:33 UTC (rev 3620)
+++ trunk/src/target/gsm/src/util/shell.c	2007-12-10 06:36:38 UTC (rev 3621)
@@ -356,6 +356,10 @@
 		payload = (char *)gmh + sizeof(*gmh);
 		printf("imsi <%s>\n", payload);
 		break;
+	case GSMD_PIN_GET_STATUS:
+		payload = (char *)gmh + sizeof(*gmh);
+		printf("%s\n", payload);
+		break;
 	case GSMD_PHONE_POWERUP:
 		if (*intresult)
 			printf("Modem power-up failed: %i\n", *intresult);
@@ -470,6 +474,7 @@
 		"\tsC\tSMS Set Service Centre (sC=number)\n"
 		"\tim\tGet imsi\n"
 		"\tcs\tGet Call status\n"
+		"\tgp\tGet PIN status\n"
 		"\tq\tQuit\n"
 		);
 }
@@ -761,6 +766,10 @@
 				printf("List current call status\n");
 				lgsm_voice_get_status(lgsmh);
 				pending_responses ++;
+			} else if ( !strncmp(buf, "gp", 2)) {
+				printf("Get PIN status\n");
+				lgsm_pin_status(lgsmh);
+				pending_responses ++;
 			} else {
 				printf("Unknown command `%s'\n", buf);
 			}





More information about the commitlog mailing list