/*********************************************************************
 * 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"

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");
		}
	}
	//测试使用
	static uint8_t temp =0;
	static uint8_t flag =0;
	if(mBackup.RestartCnt > 1 && flag ==0){flag =1;}
	
	if(1 == flag){
		if(temp ==0){temp++;
			Process_SetHoldOn(app_safe_Process,1);
		  LED_Start(LED_RESTART,COLOR_PURPLE);
		}
		else if(temp <200){
		  temp++;
			if(temp >20){temp =220;
				Process_SetHoldOn(app_safe_Process,0);
				LED_Stop(LED_RESTART);
				flag =2;
			}
		}
	}
	
	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;
		 }
	}
}

//恢复出厂设置
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();
}

void app_safe_Init(void)
{
	mBackup.RestartCnt++;
	
	Process_Start(1000,"app_safe",app_safe_Process);
	
	BLE_Client_Rx_Regist(BLE_RESTSETTING,cb_BLE_RESTSETTING);
}

 





