diff --git a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c index 879629655..8162ed466 100644 --- a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c +++ b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c @@ -762,6 +762,7 @@ UINT32 sf_gpio_get_status(UINT32 ipin) *************************************************/ void sf_mcu_dataready_ck(UINT8 startMode) { + static UINT8 McupwrFlag = 0; printf("startMode=%d\n", startMode); #if 1 if(GxUSB_GetIsUSBPlug())//sf_gpio_get_status(GPIO_INT_USBPLUGIN)) @@ -787,6 +788,11 @@ void sf_mcu_dataready_ck(UINT8 startMode) sf_set_auto_off_time(0); sf_set_pir_statu_flag(0); sf_sys_status_led_set(SF_LED_SYS_STATE_EXIT_GO_TO_PIR); + McupwrFlag++; + } + else if(McupwrFlag){ + printf("%s:%d power off err\n", __FUNCTION__, __LINE__); + system("watchdog -T 1 -t 5 /dev/watchdog"); } } else if(startMode == 3) //ON @@ -799,13 +805,18 @@ void sf_mcu_dataready_ck(UINT8 startMode) } else { - if((startMode == 0) || (startMode == 1)) //PIR MODE: ON->OFF/ ON->SETUP + if((startMode == 0) || (startMode == 1)) //PIR MODE: ON->OFF/ ON->SETUP { gModuleSleep = 0; //power off 4G module sf_set_power_off_flag(1); printf("[power off] %s(%d)\n", __FUNCTION__, __LINE__); Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0); //shutdown start + McupwrFlag++; } + else if(McupwrFlag){ + printf("%s:%d power off err\n", __FUNCTION__, __LINE__); + system("watchdog -T 1 -t 5 /dev/watchdog"); + } } #endif