r3544 - in trunk/src/target/gsm/src: gsmd util

tick at sita.openmoko.org tick at sita.openmoko.org
Sat Dec 1 02:55:05 CET 2007


Author: tick
Date: 2007-12-01 02:54:59 +0100 (Sat, 01 Dec 2007)
New Revision: 3544

Modified:
   trunk/src/target/gsm/src/gsmd/usock.c
   trunk/src/target/gsm/src/util/shell.c
Log:
gsmd: Modem power-up and -down result events.(Andrzej Zaborowski)


Modified: trunk/src/target/gsm/src/gsmd/usock.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/usock.c	2007-11-30 17:17:53 UTC (rev 3543)
+++ trunk/src/target/gsm/src/gsmd/usock.c	2007-12-01 01:54:59 UTC (rev 3544)
@@ -248,6 +248,7 @@
 static int phone_powerup_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
 {
 	struct gsmd_user *gu = ctx;
+	struct gsmd_ucmd *ucmd;
 
 	/* We need to verify if there is some error */
 	switch (cmd->ret) {
@@ -260,9 +261,31 @@
 		gsmd_log(GSMD_DEBUG, "Radio power-up failed\n");
 		break;
 	}
-	return 0;
+
+	ucmd = gsmd_ucmd_fill(sizeof(int), GSMD_MSG_PHONE,
+			GSMD_PHONE_POWERUP, 0);
+	if (ucmd) {
+		((int *) ucmd->buf)[0] = cmd->ret;
+		usock_cmd_enqueue(ucmd, gu);
+		return 0;
+	}
+	return -ENOMEM;
 }
 
+static int phone_powerdown_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
+{
+	struct gsmd_user *gu = ctx;
+	struct gsmd_ucmd *ucmd = gsmd_ucmd_fill(sizeof(int), GSMD_MSG_PHONE,
+			GSMD_PHONE_POWERDOWN, 0);
+
+	if (ucmd) {
+		((int *) ucmd->buf)[0] = cmd->ret;
+		usock_cmd_enqueue(ucmd, gu);
+		return 0;
+	}
+	return -ENOMEM;
+}
+
 static int get_imsi_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
 {
 	struct gsmd_user *gu = ctx;
@@ -295,7 +318,7 @@
 
 	case GSMD_PHONE_POWERDOWN:
 		cmd = atcmd_fill("AT+CFUN=0", 9+1,
-				 &null_cmd_cb, gu, 0, NULL);
+				 &phone_powerdown_cb, gu, 0, NULL);
 		gu->gsmd->dev_state.on = 0;
 		break;
 	case GSMD_PHONE_GET_IMSI:

Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c	2007-11-30 17:17:53 UTC (rev 3543)
+++ trunk/src/target/gsm/src/util/shell.c	2007-12-01 01:54:59 UTC (rev 3544)
@@ -344,18 +344,33 @@
 	}
 }
 
-static int phone_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh) {
-        char *payload;
-        switch (gmh->msg_subtype) {
+static int phone_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh)
+{
+	char *payload;
+	int *intresult = (void *)gmh + sizeof(*gmh);
+
+	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;
+	case GSMD_PHONE_POWERUP:
+		if (*intresult)
+			printf("Modem power-up failed: %i\n", *intresult);
+		else
+			printf("Modem powered-up okay\n");
+		break;
+	case GSMD_PHONE_POWERDOWN:
+		if (*intresult)
+			printf("Modem power-down failed: %i\n", *intresult);
+		else
+			printf("Modem down\n");
+		break;
+	default:
+		return -EINVAL;
+	}
+	pending_responses --;
+	return 0;
 }
 
 static int shell_help(void)
@@ -688,9 +703,11 @@
 			} else if (!strncmp(buf, "M", 1)) {
 				printf("Modem Power On\n");
 				lgsm_modem_power(lgsmh, 1);
+				pending_responses ++;
 			} else if (!strncmp(buf, "m", 1)) {
 				printf("Modem Power Off\n");
 				lgsm_modem_power(lgsmh, 0);
+				pending_responses ++;
 			} else {
 				printf("Unknown command `%s'\n", buf);
 			}





More information about the commitlog mailing list