1.在函数void mmi_frm_sms_new_sms_ind (void* inMsg)中拦截信息
2.变量声明
#ifdef __REMOTE_SHUTDOWN__
S8 shutdownCmd[18]={0x73,0x00,0x68,0x00,0x75,0x00,0x74,0x00,0x64,0x00,0x6f,0x00,0x77,0x00,0x6e,0x00,0x00,0x00};//shutdown
S8 desShutdownCmd[20];
S8 start[12]={0x73,0x00,0x74,0x00,0x61,0x00,0x72,0x00,0x74,0x00,0x00,0x00};//start
S8 destStart[20];
unsigned short int remoteContentLength = msgInd->no_msg_data;
#endif//__REMOTE_SHUTDOWN__
3.判断短信内容是否关机命令,以此为依据来执行相应的远程命令
#ifdef __REMOTE_SHUTDOWN__
remoteNewMsg=OslMalloc((remoteContentLength+1)*ENCODING_LENGTH);
memset((S8*)remoteNewMsg, 0, ((remoteContentLength+1)*ENCODING_LENGTH));
memcpy((PS8) remoteNewMsg, (PS8) msgInd->msg_data,remoteContentLength);
UnicodeToAnsii((PS8)desShutdownCmd, (PS8)shutdownCmd);
UnicodeToAnsii((PS8)destStart, (PS8)start);
if(strcmp(remoteNewMsg,desShutdownCmd)==0)
{
FakeShutdown();
}
if(strcmp(remoteNewMsg,destStart)==0)
{
WakeUpFromAsleep();
}
OslMfree(remoteNewMsg);
#endif//__REMOTE_SHUTDOWN__
4.关键函数代码
void FakeShutdown(void)
{
SetGPIOLevelReq(GPIO_DEV_LED_MAINLCD, LED_LIGHT_LEVEL0);
mdi_audio_suspend_background_play();
mmi_frm_kbd_set_tone_state(MMI_KEY_TONE_DISABLED);
ActiveSilent();
GpioTurnOffKeypadLight();
lcd_sleep_in(MAIN_LCD);
TurnOnBacklight(0);
}
void WakeUpFromAsleep(void)
{
mmi_frm_kbd_set_tone_state(MMI_KEY_TONE_ENABLED);
ActiveGeneral();
TurnOffBacklight();
GpioLCDSleepOut();
SetGPIOLevelReq(GPIO_DEV_LED_MAINLCD, LED_LIGHT_LEVEL5);
lcd_backlight = 2;
}