#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 struct __attribute__((aligned(4)))
{
    uint16_t *code_list;
    uint8_t hade;
    uint8_t tail;
    uint8_t code_num;
    uint8_t len;
    uint8_t disp;
}FaultCodeList_t;


//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);

uint8_t List_Init(FaultCodeList_t *CodeList, uint16_t Arr[], uint8_t Len);
void FaultCode_Servers(void);

#endif