#ifndef CODE_H
#define CODE_H
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "Application.h"

/*故障码类型A can报文轮询发送方式*/
#define FaultCodeType_A     1


#define FaultCodeType       FaultCodeType_A

#define MaxFaultCode 72
#define FaultCodeCount 5000

typedef enum
{
    DTC_1,
    DTC_2,
    DTC_3,
    NUM_FAULT_TYPES,
} FaultCodeType_Num;

typedef uint32_t (*FaultCodeCallback)(void);    /* 故障码回调函数 */
typedef uint16_t (*FaultCodeNumback)(void);     /* 故障码个数回调函数 */
typedef uint16_t (*FaultCodeValidback)(void);     /* 故障码有效回调函数 */

typedef struct __attribute__((aligned(4)))
{
    uint32_t u16FaultCode;          /* 故障码 */
    uint16_t u16FaultCodeCount;     /* 故障码总数 */
} _st_FaultCode;



typedef struct __attribute__((aligned(4)))
{
    FaultCodeCallback callbacks[NUM_FAULT_TYPES];
    FaultCodeNumback FaultCodeNumCbk;
    FaultCodeValidback FaultCodeVaildCbk;

} _st_Init;




extern void FaultCode_Service(uint16_t Cycle);

extern void FaultCode_Init(void);



extern uint32_t Get_Current_FaultCode(void);
extern uint8_t Get_FaultCode_Valid(void);

#endif