gsmd: Query Antenna Status (Erin Yueh)

git-svn-id: http://svn.openmoko.org/trunk/src/target/gsm@4174 99fdad57-331a-0410-800a-d7fa5415bdb3
This commit is contained in:
erin_yueh 2008-03-06 09:35:12 +00:00
parent dc73a4a864
commit 636e8ecfdf
4 changed files with 27 additions and 0 deletions

View File

@ -142,6 +142,7 @@ enum gsmd_msg_phone {
GSMD_PHONE_GET_BATTERY = 8,
GSMD_PHONE_VIB_ENABLE = 9,
GSMD_PHONE_VIB_DISABLE = 10,
GSMD_PHONE_POWER_STATUS = 11,
};
enum gsmd_msg_modem {

View File

@ -613,6 +613,15 @@ static int phone_powerdown_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
cmd->id, sizeof(ret), &ret);
}
static int phone_power_status_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
{
DEBUGP("resp: %s\n", resp);
if (!strncmp(resp, "+CFUN: ", 7))
resp += 7;
return gsmd_ucmd_submit(ctx, GSMD_MSG_PHONE, GSMD_PHONE_POWER_STATUS,
cmd->id, strlen(resp) + 1, resp);
}
static int phone_get_manuf_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
{
struct gsmd_user *gu = ctx;
@ -721,6 +730,11 @@ static int usock_rcv_phone(struct gsmd_user *gu, struct gsmd_msg_hdr *gph,
&phone_powerdown_cb, gu, 0, NULL);
gu->gsmd->dev_state.on = 0;
break;
case GSMD_PHONE_POWER_STATUS:
cmd = atcmd_fill("AT+CFUN?", 8+1,
&phone_power_status_cb, gu, 0, NULL);
break;
case GSMD_PHONE_GET_IMSI:
return gsmd_ucmd_submit(gu, GSMD_MSG_PHONE, GSMD_PHONE_GET_IMSI,
0, strlen(gu->gsmd->imsi) + 1, gu->gsmd->imsi);

View File

@ -45,6 +45,11 @@ int lgsm_phone_power(struct lgsm_handle *lh, int power)
return lgsm_send_simple(lh, GSMD_MSG_PHONE, type);
}
int lgsm_get_power_status(struct lgsm_handle *lh)
{
return lgsm_send_simple(lh, GSMD_MSG_PHONE, GSMD_PHONE_POWER_STATUS);
}
int lgsm_get_imsi(struct lgsm_handle *lh)
{
return lgsm_send_simple(lh, GSMD_MSG_PHONE, GSMD_PHONE_GET_IMSI);

View File

@ -425,6 +425,9 @@ static int phone_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh)
else
printf("Modem down\n");
break;
case GSMD_PHONE_POWER_STATUS:
printf("Antenna Status: %s\n", payload);
break;
case GSMD_PHONE_GET_BATTERY:
printf("<BCS>: %d <BCL>: %d \n", bc->bcs, bc->bcl);
break;
@ -546,6 +549,7 @@ static void shell_help(void)
"\tH\tHangup call\n"
"\tO\tAntenna Power On\n"
"\to\tAntenna Power Off\n"
"\tgos\tGet Antenna Status\n"
"\tV\tVibrator Enable (CVIB=1)\n"
"\tv\tVibrator Disable (CVIB=0)\n"
"\tM\tModem Power On\n"
@ -680,6 +684,9 @@ int shell_main(struct lgsm_handle *lgsmh, int sync)
} else if (!strcmp(buf, "o")) {
printf("Power-Off\n");
lgsm_phone_power(lgsmh, 0);
} else if (!strcmp(buf, "gos")) {
printf("Get Antenna status\n");
lgsm_get_power_status(lgsmh, 0);
} else if (!strcmp(buf, "V")) {
printf("Vibrator-Enable\n");
lgsm_phone_vibrator(lgsmh, 1);