#ifndef __UDS_DTC_H__ #define __UDS_DTC_H__ // #include "config.h" #include "uds_config.h" #define DTC_FOREACH(func)\ /*00*/ func(0x911716,ECU_VOLTAGE_LOW) \ /*01*/ func(0x911717,ECU_VOLTAGE_HIGH) \ /*02*/ func(0xC07388,ECU_ENTER_BUSOFF) \ /*03*/ func(0xC0FE01,INPUT_OVERVOLTAGE) \ /*04*/ func(0xC0FE02,INPUT_UNDERVOLTAGE) \ /*05*/ func(0xC0FE03,OUTPUT_OVERVOLTAGE) \ /*06*/ func(0xC0FE04,OUTPUT_UNDERVOLTAGE) \ /*07*/ func(0xC0FE05,INPUT_OVERCURRENT) \ /*08*/ func(0xC0FE06,OUTPUT_OVERCURRENT) \ /*09*/ func(0xC0FE07,OVERTEMPERTURE) #define GENERATE_DTC_ID(value,name) id##name , #define GENERATE_DTC_VALUE_ARRAY(value,name) value, #define GENERATE_DTC_FAULT_FLAG(value,name) uint32_t f##name: 1; #define GENERATE_DTC_TIMER_ARRAY(value,name) uint16_t u##name; #define GENERATE_DTC_OPTION(value,name) uint32_t op##name: 1; //DTC 请求子功能 #define DTC_ReportNumberOfDTCByStatusMask 0x01 #define DTC_ReportDTCByStatusMask 0x02 #define DTC_ReportDTCSnapshotRecordByDTCNumber 0x04 #define DTC_ReportDTCExtendedDataRecordByDTCNumber 0x06 #define DTC_ReportSupportedDTCs 0x0A //DTCStatusMask/statusOfDtc 参数相关信息 #define DTC_STATUS_Test_Failed 0//测试失效 #define DTC_STATUS_Test_Failed_This_Monitoring_Cycle 1//本检测周期测试失效 #define DTC_STATUS_Pending_DTC 2//等待DTC #define DTC_STATUS_Confirmed_DTC 3//确认DTC" #define DTC_STATUS_Test_Not_Completed_Since_Last_Clear 4//上次清零后测试未完成 #define DTC_STATUS_Test_Failed_Since_Last_Clear 5//上次清零后测试失效 #define DTC_STATUS_Test_Not_Completed_This_Monitoring_Cycle 6//本检测周期测试未完成 #define DTC_STATUS_Warning_Indicator_Requested 7//警告指示位请求 #define DTC_STATUS_Support_Bit_Status ((1<Dec)*0.0625 uint8_t VehSpeedL; //车速低byte uint8_t BatVolt; //蓄电池电压(最大25.4V) 精度.01V uint8_t SOC; }; uint8_t d8[14]; }DTC_SnapshotType; typedef union { struct { uint8_t FaultCounter; uint8_t FaultCounterOfAge; uint8_t FaultAgingCounter; }; uint8_t d8[3]; }DTC_ExtendedType; typedef struct { uint8_t status; DTC_SnapshotType snapshot; DTC_ExtendedType extended; uint8_t crc16[2]; //校验 } DTC_RecordDataBufType; typedef struct { DTC_RecordDataBufType recordData[DTC_ID_NUM]; }DTC_StatusType; typedef union { struct { uint8_t DTCLowByte; uint8_t DTCMiddleByte; uint8_t DTCHightByte; uint8_t res; }; uint32_t dtc; }DTC_MaskRecordTpye; typedef struct { uint8_t DTCReportSubFunction; uint8_t DTCStatusMask; DTC_MaskRecordTpye DTCMaskRecord; uint8_t DTCRecordNumber; DTC_FORMAT_IDENTIFIE DTCFormatIdentifie; DTC_COUNT DTCcount; DTC_StatusType DTCStatus; } DTC_STRUCT; #endif