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