r1281 - trunk/src/target/gsm/src/gsmd

laforge at sita.openmoko.org laforge at sita.openmoko.org
Thu Mar 8 22:49:00 CET 2007


Author: laforge
Date: 2007-03-08 22:48:59 +0100 (Thu, 08 Mar 2007)
New Revision: 1281

Modified:
   trunk/src/target/gsm/src/gsmd/usock.c
   trunk/src/target/gsm/src/gsmd/vendor_ti.c
Log:
* introduce ciphering indication parsing and event generation
* stubs for volume control
* add data structure resembing gsm device state


Modified: trunk/src/target/gsm/src/gsmd/usock.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/usock.c	2007-03-08 21:34:11 UTC (rev 1280)
+++ trunk/src/target/gsm/src/gsmd/usock.c	2007-03-08 21:48:59 UTC (rev 1281)
@@ -210,11 +210,13 @@
 	case GSMD_PHONE_POWERUP:
 		cmd = atcmd_fill("AT+CFUN=1", 9+1,
 				 &null_cmd_cb, gu, 0);
+		gu->gsmd->dev_state.on = 1;
 		break;
 
 	case GSMD_PHONE_POWERDOWN:
 		cmd = atcmd_fill("AT+CFUN=0", 9+1,
 				 &null_cmd_cb, gu, 0);
+		gu->gsmd->dev_state.on = 0;
 		break;
 	default:
 		return -EINVAL;

Modified: trunk/src/target/gsm/src/gsmd/vendor_ti.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/vendor_ti.c	2007-03-08 21:34:11 UTC (rev 1280)
+++ trunk/src/target/gsm/src/gsmd/vendor_ti.c	2007-03-08 21:48:59 UTC (rev 1281)
@@ -101,7 +101,42 @@
 
 static int cpri_parse(char *buf, int len, const char *param, struct gsmd *gsmd)
 {
-	/* FIXME: parse ciphering indication */
+	char *tok1, *tok2;
+
+	tok1 = strtok(buf, ",");
+	if (!tok1)
+		return -EIO;
+	
+	tok2 = strtok(NULL, ",");
+	if (!tok2) {
+		switch (atoi(tok1)) {
+		case 0:
+			gsmd->dev_state.ciph_ind.flags &= ~GSMD_CIPHIND_ACTIVE;
+			break;
+		case 1:
+			gsmd->dev_state.ciph_ind.flags |= GSMD_CIPHIND_ACTIVE;
+			break;
+		case 2:
+			gsmd->dev_state.ciph_ind.flags |= GSMD_CIPHIND_DISABLED_SIM;
+			break;
+		}
+	} else {
+		struct gsmd_evt_auxdata *aux;
+		struct gsmd_ucmd *ucmd = usock_build_event(GSMD_MSG_EVENT,
+							   GSMD_EVT_CIPHER,
+							   sizeof(*aux));
+		if (!ucmd)
+			return -ENOMEM;
+
+		aux = (struct gsmd_evt_auxdata *) ucmd->buf;
+
+		aux->u.cipher.net_state_gsm = atoi(tok1);
+		aux->u.cipher.net_state_gsm = atoi(tok2);
+
+		usock_evt_send(gsmd, ucmd, GSMD_EVT_CIPHER);
+	}
+
+	return 0;
 }
 
 /* Call Progress Information */





More information about the commitlog mailing list