/********************************************************************* * INCLUDES */ #include "ble_comm.h" #include "app_flash.h" #include "app_safe.h" #include "hal_ble_client.h" #include "hal_ble_host.h" #include "hal_led.h" #include "drv_trigger.h" static volatile uint8_t restflag =0; void app_SetRestsettting(void){ restflag =1; } static void app_safe_Process(void) { static uint8_t cnt =0; if(mBackup.ErrStartCnt >0){ cnt++; if(cnt >=60){//一分钟后清空标志位 mBackup.ErrStartCnt =0; if(Flash_SaveBackup() != ZONE_OP_SUCCESS)Except_TxError(EXCEPT_Power,"save ErrStartCnt fail"); DEBUG_LOG("clear mBackup.ErrorStartFlag\n"); } } if(mBackup.RestartCnt > 1){ char buff[40]={0}; memset(buff,0,sizeof(buff)); if(mFlash.isHost){ sprintf(buff,"left shoes restart:%d",mBackup.RestartCnt); }else{ sprintf(buff,"right shoes restart:%d",mBackup.RestartCnt); } if(0 == Except_TxError(EXCEPT_Power,(const char*)buff)){ mBackup.RestartCnt =0; } } if(restflag){restflag =0; Flash_DeleteAllInfor(); Flash_DeleteAllStep(); Flash_DeleteAllBackup(); nrf_delay_ms(500); NVIC_SystemReset(); } } //恢复出厂设置 static void cb_BLE_RESTSETTING(void* handle) { Flash_DeleteAllInfor(); Flash_DeleteAllStep(); Flash_DeleteAllBackup(); BLE_Client_Rx_t* target = handle; uint8_t cmd = target->pDat[0]; BLE_Host_Tx_Send(0,BLE_RESTSETTING,&cmd,1); nrf_delay_ms(500); NVIC_SystemReset(); } static void app_CONNTED_LED_Process(void){ static uint8_t lastconeted =0; static uint8_t BlinkTime =0; static uint8_t BlinkfLAG =0; uint8_t nowconeted =0; if(mFlash.isHost) nowconeted = host_isconnect(); else nowconeted = slave_isconnect(); // DEBUG_LOG("mFlash.isHost %d,nowconeted:%d,\n",mFlash.isHost,nowconeted); if(nowconeted != lastconeted){ lastconeted = nowconeted; if(nowconeted){ BlinkfLAG =1; BlinkTime =0; DEBUG_LOG("COLOR_PURPLE\r\n"); // LED_Start(LED_LRCHECK,COLOR_CYAN); LED_Start(LED_LRCHECK,COLOR_CYAN); Process_SetHoldOn(app_CONNTED_LED_Process,1); } else{ BlinkfLAG =0; BlinkTime =0; Process_SetHoldOn(app_CONNTED_LED_Process,0); LED_Stop(LED_LRCHECK); } } if(BlinkfLAG){BlinkTime++; if(BlinkTime <=30){ BlinkfLAG =1; } else{ BlinkfLAG =0; BlinkTime =0; LED_Stop(LED_LRCHECK); } } } //static uint8_t update_led =0; //static void cb_BLE_LEDON_PURPLE(void* handle) //{ // update_led = 1; //} void app_BLE_LEDON_PURPLE_process(void){ static uint32_t Lastch =0; uint32_t ch = drv_GetChargeTrig(); if(!ch && Lastch != ch){ LED_Stop(LED_ONPURPLE); LED_Stop(LED_LR_LED); Process_SetHoldOn(app_BLE_LEDON_PURPLE_process,0); } Lastch = ch; } void app_safe_Init(void) { mBackup.RestartCnt++; Process_Start(1000,"app_safe",app_safe_Process); // Process_Start(100,"app_CONNTED_LED",app_CONNTED_LED_Process); BLE_Client_Rx_Regist(BLE_RESTSETTING,cb_BLE_RESTSETTING); //常亮紫色灯 // BLE_Client_Rx_Regist(BLE_LEDON_PURPLE,cb_BLE_LEDON_PURPLE); // SEGGER_RTT_printf(0,"LastsotfVersion:%d,updateFlag:%d,nowsoftv:%d\r\n",mFlash.mClient.LastsotfVersion,mFlash.mClient.updateFlag,SOFTWARE_VERSION); Process_Start(100,"app_BLE_LEDON_PURPLE",app_BLE_LEDON_PURPLE_process); if(0 == mFlash.mClient.LastsotfVersion || (SOFTWARE_VERSION != mFlash.mClient.LastsotfVersion && 0xA5 == mFlash.mClient.updateFlag)){ // if(0xA5 == mFlash.mClient.updateFlag){ LED_Start(LED_ONPURPLE,COLOR_PURPLE); Process_SetHoldOn(app_BLE_LEDON_PURPLE_process,1); mFlash.mClient.LastsotfVersion = SOFTWARE_VERSION; mFlash.mClient.updateFlag = 0; if(Flash_SaveInfomation() != ZONE_OP_SUCCESS)Except_TxError(EXCEPT_Power,"pwr save information fail"); } }