diff --git a/code/application/source/sf_app/code/include/sf_system.h b/code/application/source/sf_app/code/include/sf_system.h index 337efbac7..cdc3a7e1b 100755 --- a/code/application/source/sf_app/code/include/sf_system.h +++ b/code/application/source/sf_app/code/include/sf_system.h @@ -63,6 +63,7 @@ SINT32 sf_app_load_ko_start(void); SINT32 sf_app_mcu_para_start(void); SINT32 app_auto_poweroff_start(void); UINT8 sf_check_power_on_mode(void); +void sf_power_off_msg_to_cardv(void); #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/source/app/sf_system.c b/code/application/source/sf_app/code/source/app/sf_system.c index 1c71c6be5..8b05728ce 100755 --- a/code/application/source/sf_app/code/source/app/sf_system.c +++ b/code/application/source/sf_app/code/source/app/sf_system.c @@ -894,7 +894,6 @@ UINT8 *sf_versionGet(UINT8 ver[],UINT8 fea[]) *************************************************/ void sf_power_off(void) { - SF_MESSAGE_BUF_S stMessageBuf = {0}; UINT8 PowerOnMode = sf_poweron_type_get(); printf("[%s:%d] s\n", __FUNCTION__, __LINE__); if(SF_FAILURE == sf_check_sd()) @@ -935,11 +934,7 @@ void sf_power_off(void) sf_power_off_check_ui_para_sava(); sf_statistics_param_save(psfPara); - MLOGI(" SF_KEY_PIN_AOTU_MODE_POWOFF CMD_KEY\n"); - stMessageBuf.cmdId = CMD_KEY; - stMessageBuf.arg1 = SF_EVENT_KEY_SHORT_CLICK; - stMessageBuf.arg2 = SF_KEY_PIN_AOTU_MODE_POWOFF;//auto mode powoff - sf_com_message_send_to_cardv(&stMessageBuf); + sf_power_off_msg_to_cardv(); printf("[%s:%d] e\n", __FUNCTION__, __LINE__); } pthread_cond_t condition; @@ -1481,4 +1476,22 @@ SINT32 sf_app_mcu_para_stop(void) return ret; } return SF_SUCCESS; +} + +/************************************************* + Function: sf_power_off_msg_to_cardv + Description: power off + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_power_off_msg_to_cardv(void) +{ + SF_MESSAGE_BUF_S stMessageBuf = {0}; + SLOGI(" SF_KEY_PIN_AOTU_MODE_POWOFF CMD_KEY\n"); + stMessageBuf.cmdId = CMD_KEY; + stMessageBuf.arg1 = SF_EVENT_KEY_SHORT_CLICK; + stMessageBuf.arg2 = SF_KEY_PIN_AOTU_MODE_POWOFF;//auto mode powoff + sf_com_message_send_to_cardv(&stMessageBuf); } \ No newline at end of file diff --git a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c index 00c697923..06c8d0c2a 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c @@ -30,7 +30,9 @@ #include #include #include "sf_common.h" +#include "sf_param_common.h" #include "sf_sms.h" +#include "sf_system.h" #ifdef __cplusplus #if __cplusplus extern "C" { @@ -128,12 +130,15 @@ unsigned char sf_mcu_power_on_para_get (MCUParam_t attrId) { unsigned char dataTemp1 = 0, dataTemp2 = 0; unsigned char startMode = 0; + unsigned char startModetmp = sf_poweron_type_get(); + int startflag = 1; //unsigned char mcuVer = 0; unsigned char mcuReg[REG_SIZE] = { 0 }; unsigned char mcuData[REG_SIZE] = { 0 }; unsigned char i = 0; SF_TIME_S time; + SF_CHK_STARTMODE: if(attrId == SF_MCU_STARTMODE) { sf_mcu_read(START_MODE, &dataTemp1); @@ -163,15 +168,29 @@ unsigned char sf_mcu_power_on_para_get (MCUParam_t attrId) IRSHTTER = (dataTemp2 << 8) | dataTemp1; } + if((startMode != startModetmp) && (startflag)) + { + startflag = 0; + sf_sleep_ms(200); + goto SF_CHK_STARTMODE; + } printf(" start mode = %d IRSHTTER = %d McuVersion:%d.%d.%d\n", startMode, IRSHTTER, (McuVersion>>8)&0xFF, McuVersion & 0xFF, McuSubVersion); sf_mcu_rtc_get(&time); - if(SF_TRUE == sf_sys_rtc_time_check((SF_PARA_TIME_S*)&time)){ - sf_sys_rtc_time_set((SF_PARA_TIME_S*)&time); - }else{ - sf_sys_rtc_time_reset(); + if(startMode == startModetmp) + { + if(SF_TRUE == sf_sys_rtc_time_check((SF_PARA_TIME_S*)&time)){ + sf_sys_rtc_time_set((SF_PARA_TIME_S*)&time); + }else{ + sf_sys_rtc_time_reset(); + } } - sf_poweron_type_set(startMode); - if(SF_MCU_STARTUP_ONKEY == startMode) + else + { + sf_power_off_msg_to_cardv(); + } + //sf_poweron_type_set(startMode); + + if(SF_MCU_STARTUP_ONKEY == startModetmp) ConfigureModeFlag = 1; //McuPowerOnMode = startMode; return startMode;