void Thread_EdrProcess(void const *argument)
{
static uint8_t read_vin_state = 0;
uint8_t cnt_getvin=0;
float x_v = 0.0f;
float y_v = 0.0f;
memset(&VehicleEDRData, 0xff,sizeof(VehicleEDRData));
FXLS90322_Init();
read_vin_state=get_vin(vin_info);
GetSnFromFlash(sn_info);
while(IsAccelerometerValid() == FALSE)
{
osDelay(EDR_PROCESS_INTERVAL);
};
while(1)
{
if(!read_vin_state)
{
if(cnt_getvin<10)
{
cnt_getvin++;
if(get_vin(vin_info))
{
read_vin_state = 1;
}
}
}
if(flag_set_vin)
{
const char RESET_VIN[] = "RESET000000000000"; //清FLASH中VIN
const char RESET_VIN_1[] = "reset000000000000";
uint8_t res , res_1;
res = memcmp(vin_info,RESET_VIN ,sizeof(vin_info));
res_1 = memcmp(vin_info,RESET_VIN_1,sizeof(vin_info));
if((!res)||(!res_1))
{
W25QXX_Erase_Chip_osMutex();
for(uint8_t i=0 ;i< sizeof(vin_info);i++)
{
vin_info[i] = 0xFF;
}
}
else
{
set_vin(vin_info,17);
get_vin(vin_info_temp);
vin_read_flag = 1;
uprintf("@VIN:%s\r\n",vin_info_temp);
}
flag_set_vin=0;
}
if(GetFlagSetSn())
{
SetSnToFlash(sn_info);
GetSnFromFlash(sn_info);
uprintf("@SN:%s\r\n",sn_info);
SetFlagSetSn(0);
}
if(GetCalibrationFlag() == 3)
{
/*加速度计校准*/
x_offset = Accelerometer_Calibration(XaxisDeltaVBuff, 200);
y_offset = Accelerometer_Calibration(YaxisDeltaVBuff, 200);
if(getTermianlState() != 2)
{
WriteAccOffsetDataToFlash((uint8_t *)&x_offset, 8);
SetCalibrationFlag(4);
CalibrationSucFlag = 1;
uprintf("%f",x_offset);
}
else
{
if((x_offset - 36 < 6.5) && (x_offset - 36 > -6.5))
{
CalibrationSucFlag = 1;
}
else
{
USARTSendOut(USART0,"\r\n需要重新校准\r\n",strlen("\r\n需要重新校准\r\n"));
}
uprintf("%f",x_offset);
SetCalibrationFlag(0);
}
}
else
{
CrashEventSaveToFlash();
}
if(GetEraseCrasheventFlag())
{
CleanCrashEventFlash();
uprintf("Clear complete\r\n");
SetEraseCrasheventFlag(0);
}
osDelay(EDR_PROCESS_INTERVAL);
}
}