Services_Mileage.h 2.88 KB
Newer Older
hu's avatar
hu committed
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
#ifndef SERVICE_MILEAGE_H
#define SERVICE_MILEAGE_H

/*
Platform_32Bit
Platform_16Bit
*/

#ifdef Platform_16Bit
    #define Millib_uint8_t  unsigned char
    #define Millib_uint16_t unsigned int
    #define Millib_uint32_t unsigned long

#else
    #define Millib_uint8_t  unsigned char
    #define Millib_uint16_t unsigned short
    #define Millib_uint32_t unsigned int
    #define Millib_uint64_t unsigned long long
#endif

#ifndef Millib_NULL
  #define Millib_NULL       (void *)0u
#endif /* NULL */

typedef enum
{
    EM_TRIP_A,
    EM_TRIP_B,
hu's avatar
hu committed
29 30 31 32 33 34 35 36
    EM_TRIP_JY,
    EM_TRIP_RY,
    EM_TRIP_BSX,
    EM_TRIP_CSQ,
    EM_TRIP_KQGZJ,
    EM_TRIP_DLZX,
    EM_TRIP_LT,

hu's avatar
hu committed
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
    EM_TRIP_MAX,
} DataTripEnum_t;

typedef enum
{
    EM_MILEAGE_BLOCK = 0u,
    EM_ODO_BLOCK,
    EM_TRIP_BLOCK,
    EM_Maintenance_BLOCK,
} Data_EEPROM_Enum_t;

typedef void (*EEPromWrite)(Data_EEPROM_Enum_t BlockID, Millib_uint32_t u32Data[], Millib_uint16_t u16Len);

typedef struct
{
    Millib_uint8_t (*Get_Sys_IG_Sts)(void);
    Millib_uint8_t (*Get_Act_V_Speed_Valid)(void);
    Millib_uint16_t (*Get_Act_V_Speed)(void);
    Millib_uint16_t (*Get_TireSize)(void);
    EEPromWrite     EEPromWrite_Cbk;
}Mileage_Func_t;

typedef struct
{
    Millib_uint32_t Mileage;
}Mileage_Init_t;

typedef struct
{
    Millib_uint32_t Stamp;
    Millib_uint32_t Offset;
}ODO_Init_t;

typedef struct
{
    Millib_uint32_t Stamp;
    Millib_uint32_t MaxValue;
    Millib_uint8_t  IsRestart;
}Trip_Init_t;

#define Data_MEM_Block_Mileage          ((Millib_uint8_t)12u)
#define Data_MEM_Block_ODO              ((Millib_uint8_t)12u)
#define Data_MEM_Block_Trip             ((Millib_uint8_t)16u)
/*
total size =Tel_MEM_Block_Size*LED_Max+Tel_MEM_Block_Addition
*/

void Data_Mileage_KL30_Init(Millib_uint8_t *pMemSpace, Mileage_Init_t *pInitData, Mileage_Func_t *pFunc);
void Data_Mileage_Wakeup_Init(Millib_uint8_t *pMemSpace, Mileage_Func_t *pFunc);
void Data_Mileage_ISR(void);
Millib_uint32_t Data_Mileage_Read(void);
Millib_uint8_t Data_Mileage_Write(Millib_uint32_t NewMileage);
void Data_Mileage_Clear(void);
void Data_Mileage_Write_EEPROM(void);

void Data_ODO_KL30_Init(Millib_uint8_t *pMemSpace, ODO_Init_t *pInitData, EEPromWrite Func);
void Data_ODO_Wakeup_Init(Millib_uint8_t *pMemSpace, EEPromWrite Func);
void Data_ODO_Processing ( void );
Millib_uint32_t Data_ODO_Read ( void );
Millib_uint32_t Data_Offset_Read ( void );
void Data_ODO_Modify ( Millib_uint32_t Offset );
void Data_ODO_Clear ( void );

void Data_Trip_KL30_Init(Millib_uint8_t *pMemSpace, Trip_Init_t *pInitData, Millib_uint8_t TotalTrip, EEPromWrite pFunc);
void Data_Trip_Wakeup_Init(Millib_uint8_t *pMemSpace, Millib_uint8_t TotalTrip, EEPromWrite pFunc);
void Data_Trip_Processing ( void );
void Data_Clear_Trip ( DataTripEnum_t TripN );
Millib_uint32_t Data_Read_Trip(DataTripEnum_t TripN);

#endif