Service_Interval_User.c 2.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#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)
{
53 54
    ee_uint16_t tmpWritestatus = 0;
    ee_uint16_t Cnt = 0;
55
    ee_uint16_t TimeOut = 0;
56
    tmpWritestatus = eeprom_WriteRecord(EEPROM_BLOCK_05, (uint8_t *)u32Data, u16Len * 4);
陈家乐's avatar
陈家乐 committed
57
    while(tmpWritestatus != WRITE_COMPLETE)
58
    {
陈家乐's avatar
陈家乐 committed
59
        //eeprom_comm_DelayUs(5000);
60 61
        tmpWritestatus = eeprom_WriteRecord(EEPROM_BLOCK_05, (uint8_t *)u32Data, u16Len * 4);
        TimeOut++;
陈家乐's avatar
陈家乐 committed
62
        if(tmpWritestatus == WRITE_COMPLETE)
63 64 65
        {
            break;
        }
陈家乐's avatar
陈家乐 committed
66
        if(TimeOut >= 3)             
67 68 69 70
        {
            return;
        }
    }
71 72 73 74
}

static void Service_Interval_Read_EEProm(uint32_t u32Data [], uint16_t u16Len)
{
75
    ee_uint16_t tmpReadstatus = 0;
陈家乐's avatar
陈家乐 committed
76
    ee_uint16_t TimeOut = 0;
77
    tmpReadstatus = eeprom_ReadRecord(EEPROM_BLOCK_05, (uint8_t *)u32Data, u16Len * 4);
陈家乐's avatar
陈家乐 committed
78
    while(tmpReadstatus != WRITE_COMPLETE)
79
    {
陈家乐's avatar
陈家乐 committed
80
        //eeprom_comm_DelayUs(5000);
81
        tmpReadstatus = eeprom_ReadRecord(EEPROM_BLOCK_05, (uint8_t *)u32Data, u16Len * 4);
陈家乐's avatar
陈家乐 committed
82 83
        TimeOut++;
        if(tmpReadstatus == WRITE_COMPLETE)
84 85 86
        {
            break;
        }
陈家乐's avatar
陈家乐 committed
87 88 89 90
        if(TimeOut >= 3)             
        {
            return;
        }
91
    }
92 93
}

94
//uint32_t g_ServiceMil100m = 0;
95 96 97 98 99 100
uint8_t Get_SERVICE_WARNING_ForCan(void)
{
    uint8_t  Res;
    uint32_t m_Condition_1;

    m_Condition_1 = Service_Interval_GetMil100m();
101
    //g_ServiceMil100m = Service_Interval_GetMil100m();
102 103 104 105 106 107 108 109 110 111 112 113 114
    if (m_Condition_1 <= 0u)
    {
        Res = 1u; /*87606-4*/
    }
    else
    {
        Res = 0u; /*87606-5*/
    }
    
    return Res;
}