r4115 - 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
Tue Feb 26 09:57:47 CET 2008


Author: erin_yueh
Date: 2008-02-26 09:57:39 +0100 (Tue, 26 Feb 2008)
New Revision: 4115

Modified:
   trunk/src/target/gsm/include/gsmd/state.h
   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: add vibrator at cmd (Sudharshan S)


Modified: trunk/src/target/gsm/include/gsmd/state.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/state.h	2008-02-26 07:53:29 UTC (rev 4114)
+++ trunk/src/target/gsm/include/gsmd/state.h	2008-02-26 08:57:39 UTC (rev 4115)
@@ -13,6 +13,7 @@
 		unsigned int network_state_gsm;
 		unsigned int network_state_gprs;
 	} ciph_ind;
+	unsigned int vibrator;
 	unsigned int on;
 	unsigned int registered;
         unsigned int ringing;

Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h	2008-02-26 07:53:29 UTC (rev 4114)
+++ trunk/src/target/gsm/include/gsmd/usock.h	2008-02-26 08:57:39 UTC (rev 4115)
@@ -140,6 +140,8 @@
 	GSMD_PHONE_GET_REVISION	= 6,
 	GSMD_PHONE_GET_SERIAL	= 7,
 	GSMD_PHONE_GET_BATTERY  = 8,
+	GSMD_PHONE_VIB_ENABLE   = 9,
+	GSMD_PHONE_VIB_DISABLE  = 10,
 };
 
 enum gsmd_msg_modem {

Modified: trunk/src/target/gsm/include/libgsmd/misc.h
===================================================================
--- trunk/src/target/gsm/include/libgsmd/misc.h	2008-02-26 07:53:29 UTC (rev 4114)
+++ trunk/src/target/gsm/include/libgsmd/misc.h	2008-02-26 08:57:39 UTC (rev 4115)
@@ -73,4 +73,8 @@
 extern int lgsm_voicemail_get(struct lgsm_handle *lh);
 /* Get Battery Connection status and charge level */
 extern int lgsm_get_battery(struct lgsm_handle *lh);
+
+/* Enable vibrator */
+extern int lgsm_phone_vibrator(struct lgsm_handle *lh, int enable);
+
 #endif

Modified: trunk/src/target/gsm/src/gsmd/usock.c
===================================================================
--- trunk/src/target/gsm/src/gsmd/usock.c	2008-02-26 07:53:29 UTC (rev 4114)
+++ trunk/src/target/gsm/src/gsmd/usock.c	2008-02-26 08:57:39 UTC (rev 4115)
@@ -679,6 +679,32 @@
 		cmd -> id, sizeof(gbs), &gbs);
 }
 
+static int phone_vibrator_enable_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
+{
+	struct gsmd_user *gu = ctx;
+	int ret = cmd->ret;
+
+	switch(ret) {
+	case 0:
+		gsmd_log(GSMD_DEBUG, "Vibrator enabled\n");
+		gu->gsmd->dev_state.vibrator = 1;
+		break;
+	default:
+		gsmd_log(GSMD_DEBUG, "AT+CVIB=1 operation failed\n");
+		break;
+	}
+	
+	return gsmd_ucmd_submit(gu, GSMD_MSG_PHONE, GSMD_PHONE_VIB_ENABLE,
+				cmd->id, sizeof(ret), &ret);
+}
+
+static int phone_vibrator_disable_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
+{
+	int ret = cmd->ret;
+	return gsmd_ucmd_submit(ctx, GSMD_MSG_PHONE, GSMD_PHONE_VIB_DISABLE,
+				cmd->id, sizeof(ret), &ret);
+}
+	
 static int usock_rcv_phone(struct gsmd_user *gu, struct gsmd_msg_hdr *gph, 
 			   int len)
 {
@@ -718,6 +744,13 @@
 	case GSMD_PHONE_GET_BATTERY:
 		cmd = atcmd_fill("AT+CBC", 6+1, &phone_get_battery_cb, gu, 0, NULL);
 		break;
+	case GSMD_PHONE_VIB_ENABLE:
+		cmd = atcmd_fill("AT+CVIB=1", 9+1, &phone_vibrator_enable_cb, gu, 0, NULL);
+		break;
+	case GSMD_PHONE_VIB_DISABLE:
+		cmd = atcmd_fill("AT+CVIB=0", 9+1, &phone_vibrator_disable_cb, gu, 0, NULL);
+		gu->gsmd->dev_state.vibrator = 0;
+		break;
 	default:
 		return -EINVAL;
 	}

Modified: trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c
===================================================================
--- trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c	2008-02-26 07:53:29 UTC (rev 4114)
+++ trunk/src/target/gsm/src/libgsmd/libgsmd_phone.c	2008-02-26 08:57:39 UTC (rev 4115)
@@ -74,3 +74,15 @@
 {
 	return lgsm_send_simple(lh, GSMD_MSG_PHONE, GSMD_PHONE_GET_BATTERY);
 }
+
+int lgsm_phone_vibrator(struct lgsm_handle *lh, int enable)
+{
+	int type;
+	if(enable)
+		type = GSMD_PHONE_VIB_ENABLE;
+	else
+		type = GSMD_PHONE_VIB_DISABLE;
+	
+	return lgsm_send_simple(lh, GSMD_MSG_PHONE, type);
+}
+		

Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c	2008-02-26 07:53:29 UTC (rev 4114)
+++ trunk/src/target/gsm/src/util/shell.c	2008-02-26 08:57:39 UTC (rev 4115)
@@ -428,6 +428,18 @@
 	case GSMD_PHONE_GET_BATTERY:
 		printf("<BCS>: %d <BCL>: %d \n", bc->bcs, bc->bcl);
 		break;		
+	case GSMD_PHONE_VIB_ENABLE:
+		if(*intresult)
+			printf("Vibrator enable failed: %i\n", *intresult);
+		else
+			printf("Vibrator enabled\n");
+		break;
+	case GSMD_PHONE_VIB_DISABLE:
+		if(*intresult)
+			printf("Vibrator disable failed: %i\n", *intresult);
+		else
+			printf("VIbrator disabled\n");
+		break;
 	default:
 		return -EINVAL;
 	}
@@ -534,7 +546,9 @@
 		"\tH\tHangup call\n"
 		"\tO\tAntenna Power On\n"
 		"\to\tAntenna Power Off\n"
-		"\tM\tModem Power On\n"
+		"\tV\tVibrator Enable (CVIB=1)\n"
+		"\tv\tVibrator Disable (CVIB=0)\n"
+	       	"\tM\tModem Power On\n"
 		"\tm\tModem Power Off\n"
 		"\tr\tRegister to network\n"
 		"\tR\tRegister to given operator (R=number)\n"
@@ -666,6 +680,12 @@
 			} else if (!strcmp(buf, "o")) {
 				printf("Power-Off\n");
 				lgsm_phone_power(lgsmh, 0);
+			} else if (!strcmp(buf, "V")) {
+				printf("Vibrator-Enable\n");
+				lgsm_phone_vibrator(lgsmh, 1);
+			} else if (!strcmp(buf, "v")) {
+				printf("Vibrator-Disable\n");
+				lgsm_phone_vibrator(lgsmh, 0);
 			} else if (!strcmp(buf, "r")) {
 				printf("Register\n");
 				lgsm_netreg_register(lgsmh, "\0     ");





More information about the commitlog mailing list