#include "Service_Interval.h" #include "Service_Interval_User.h" uint8_t __attribute__((aligned(4))) DataMaintainBuf [ Data_MEM_Block_Maintain ]; static void Service_Interval_Write_EEProm(uint32_t u32Data [], uint16_t u16Len); static void Service_Interval_Read_EEProm(uint32_t u32Data [], uint16_t u16Len); void Service_Interval_User_KL30Init(void) { Maintain_Init_t InitData; Maintain_Func_t Func; InitData.IntervalDayEnable = 0; //默认值 InitData.IntervalDay = 90; InitData.IntervalKm = 500; //回调函数 Func.PowerSts_Cbk = Common_Get_IG_Sts; Func.ReadODO_Cbk = Data_ODO_Read; Func.EEPromWrite_Cbk = Service_Interval_Write_EEProm; Func.EEPromRead_Cbk = Service_Interval_Read_EEProm; Service_Interval_KL30_Init(DataMaintainBuf, &InitData, &Func); } void Service_Interval_User_WakeupInit(void) { Maintain_Func_t Func; //回调函数 Func.PowerSts_Cbk = Common_Get_IG_Sts; Func.ReadODO_Cbk = Data_ODO_Read; Func.EEPromWrite_Cbk = Service_Interval_Write_EEProm; Func.EEPromRead_Cbk = Service_Interval_Read_EEProm; Service_Interval_Wakeup_Init(DataMaintainBuf, &Func); } void Service_Interval_First_Reset(void) { Service_Interval_SetKm(500); // 500km } void Service_Interval_Second_Reset(void) { Service_Interval_SetKm(1000); // 1000km } static void Service_Interval_Write_EEProm(uint32_t u32Data [], uint16_t u16Len) { ee_uint16_t tmpWritestatus = 0; ee_uint16_t Cnt = 0; ee_uint16_t TimeOut = 0; tmpWritestatus = eeprom_WriteRecord(EEPROM_BLOCK_05, (uint8_t *)u32Data, u16Len * 4); while(tmpWritestatus != WRITE_COMPLETE) { //eeprom_comm_DelayUs(5000); tmpWritestatus = eeprom_WriteRecord(EEPROM_BLOCK_05, (uint8_t *)u32Data, u16Len * 4); TimeOut++; if(tmpWritestatus == WRITE_COMPLETE) { break; } if(TimeOut >= 3) { return; } } } static void Service_Interval_Read_EEProm(uint32_t u32Data [], uint16_t u16Len) { ee_uint16_t tmpReadstatus = 0; ee_uint16_t TimeOut = 0; tmpReadstatus = eeprom_ReadRecord(EEPROM_BLOCK_05, (uint8_t *)u32Data, u16Len * 4); while(tmpReadstatus != WRITE_COMPLETE) { //eeprom_comm_DelayUs(5000); tmpReadstatus = eeprom_ReadRecord(EEPROM_BLOCK_05, (uint8_t *)u32Data, u16Len * 4); TimeOut++; if(tmpReadstatus == WRITE_COMPLETE) { break; } if(TimeOut >= 3) { return; } } } //uint32_t g_ServiceMil100m = 0; uint8_t Get_SERVICE_WARNING_ForCan(void) { uint8_t Res; uint32_t m_Condition_1; m_Condition_1 = Service_Interval_GetMil100m(); //g_ServiceMil100m = Service_Interval_GetMil100m(); if (m_Condition_1 <= 0u) { Res = 1u; /*87606-4*/ } else { Res = 0u; /*87606-5*/ } return Res; }