๐Ÿž fix:ๆ•…้šœ็ ้—ฎ้ข˜๏ผš61955ใ€61932ใ€61931ใ€61927

parent 3b98ffad
#include "code.h"
static _st_Init FaultCodeInit;
static uint16_t u16FaultCodeDtcCount = 0;
static uint16_t u16FaultCodeDtcCountBack = 0;
static uint16_t u16FaultCodeDtcCounttemp = 0;
static _st_FaultCode stFaultCode[MaxFaultCode] = {0};
static _st_FaultCode stFaultCodeBack[MaxFaultCode] = {0};
static _st_FaultCode stFaultCodetemp[MaxFaultCode] = {0};
static uint8_t u8FaultCodeValid = 0;
//static _st_Init FaultCodeInit;
//static uint16_t u16FaultCodeDtcCount = 0;
//static uint16_t u16FaultCodeDtcCountBack = 0;
//static uint16_t u16FaultCodeDtcCounttemp = 0;
//static _st_FaultCode stFaultCode[MaxFaultCode] = {0};
//static _st_FaultCode stFaultCodeBack[MaxFaultCode] = {0};
//static _st_FaultCode stFaultCodetemp[MaxFaultCode] = {0};
//static uint8_t u8FaultCodeValid = 0;
FaultCodeList_t FaultCode_t;
uint16_t FaultCodeList [MaxFaultCode];
uint32_t Get_FaultCodeDtc1(void)
{
uint32_t u16FaultCode = 0x0000;
......@@ -122,24 +126,25 @@ uint32_t Get_FaultCodeDtc2(void)
return u16FaultCode;
}
uint16_t Get_FaultCodeNum(void)
{
uint16_t u16FaultCode = 0x0000;
u16FaultCode = Get_CAN_CH0_ID_402_Sig_ECU_DTCAmnt();
return u16FaultCode;
}
uint16_t Get_FaultCodeValid(void)
{
return 1;
}
//uint16_t Get_FaultCodeNum(void)
//{
// uint16_t u16FaultCode = 0x0000;
//
// u16FaultCode = Get_CAN_CH0_ID_402_Sig_ECU_DTCAmnt();
// return u16FaultCode;
//}
//
//uint16_t Get_FaultCodeValid(void)
//{
// return 1;
//}
/**
* @brief ๆ•…้šœ็ ๅˆๅง‹ๅŒ–ๅ‡ฝๆ•ฐ
*/
void FaultCode_Init(void)
{
#if 0
uint16_t i = 0;
for (i = 0; i < MaxFaultCode; i++)
{
......@@ -159,8 +164,12 @@ void FaultCode_Init(void)
u16FaultCodeDtcCountBack = 0;
u8FaultCodeValid = 0;
#endif
List_Init(&FaultCode_t, FaultCodeList, (uint8_t)MaxFaultCode);
}
#if 0
/**
* @brief ๆŸฅ่ฏขๅฝ“ๅ‰ๆ•…้šœ็ ๆ˜ฏๅฆๅญ˜ๅœจ
* @param u32FaultCode ๆ•…้šœ็ 
......@@ -333,16 +342,133 @@ void FaultCode_Service(uint16_t Cycle)
u16FaultCodeDtcCountBack = 0;
}
}
#endif
#if 1
uint8_t List_Init(FaultCodeList_t *CodeList, uint16_t Arr[], uint8_t Len)
{
if(Len < 1)
{
return 1;//ๅˆ—่กจ็ฉบ
}
CodeList->code_list = Arr;
CodeList->len = Len;
CodeList->hade = 0;
CodeList->code_num = 0;
CodeList->tail = 0;
CodeList->disp = 0;
return 0;
}
uint8_t List_Find(FaultCodeList_t *CodeList, uint16_t FaultCode)
{
for(int i=CodeList->hade; i<CodeList->tail; i++)
{
if(CodeList->code_list[i] == FaultCode)
{
return 1;
}
}
return 0;
}
uint8_t List_add(FaultCodeList_t *CodeList, uint16_t FaultCode)
{
if((CodeList->tail+1) >= CodeList->len)
{
return 1;//ๅˆ—่กจๆปก
}
if(List_Find(CodeList, FaultCode) != 0)
{
return 2;//ๅทฒๅญ˜ๅœจ
}
// if(CodeList->code_num <= (CodeList->tail - CodeList->hade))
// {
// return 3;
// }
CodeList->code_list[CodeList->tail] = FaultCode;
CodeList->tail++;
return 0;
}
uint8_t List_Clear(FaultCodeList_t *CodeList)
{
CodeList->hade = 0;
CodeList->tail = 0;
//CodeList->disp = 0;
//CodeList->code_num = 0;
return 0;
}
uint8_t List_GetNum(FaultCodeList_t *CodeList)
{
return CodeList->tail - CodeList->hade;
}
uint16_t FaultTimeCount = 0;
//10ms
void FaultCode_Servers(void)
{
FaultTimeCount++;
uint16_t FaultCodeNum = Get_CAN_CH0_ID_402_Sig_ECU_DTCAmnt();
if(FaultCode_t.code_num != FaultCodeNum)//ๆ•…้šœ็ ๆ•ฐ้‡ๅ˜ๅŒ–๏ผŒๆธ…็ฉบ
{
FaultCode_t.code_num = FaultCodeNum;
List_Clear(&FaultCode_t);
}
if((List_GetNum(&FaultCode_t) > FaultCodeNum) )//ๆ•…้šœ็ ๅ˜ๅŒ–๏ผŒๆธ…็ฉบ
{
List_Clear(&FaultCode_t);
}
if(FaultCodeNum != 0)
{
List_add(&FaultCode_t, Get_FaultCodeDtc1());
if(FaultCodeNum > 1)
{
List_add(&FaultCode_t, Get_FaultCodeDtc2());
}
}
//else
//{
// //List_Clear(&FaultCode_t);//ๆ•…้šœ็ 
//}
}
uint16_t List_Display(FaultCodeList_t *CodeList, uint16_t TimeCount)
{
if(CodeList->hade == CodeList->tail)
{
return 0;
}
if(TimeCount >= 500)
{
FaultTimeCount = 0;
if(++(CodeList->disp) >= (CodeList->tail))
{
CodeList->disp = CodeList->hade;
}
}
return CodeList->code_list[CodeList->disp];
}
#endif
/**
* @brief ่Žทๅ–ๅฝ“ๅ‰ๆ•…้šœ็ 
*/
uint32_t Get_Current_FaultCode(void)
{
return stFaultCode[0].u16FaultCode;
//return stFaultCode[0].u16FaultCode;
return List_Display(&FaultCode_t, FaultTimeCount);
}
uint8_t Get_FaultCode_Valid(void)
{
return u8FaultCodeValid;
}
// uint8_t Get_FaultCode_Valid(void)
// {
// return u8FaultCodeValid;
// }
......@@ -16,44 +16,58 @@
#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);
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);
//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
\ No newline at end of file
......@@ -17,7 +17,7 @@ void Sys_Pseudo_Real_Time_Tasks(void)
void Sys_2ms_Tasks(void)
{
Common_Input_Para();
Common_Input_Para();
//Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 2000u);
Sys_Status_Update_Service();
Analog_Signal_Conv_Service();
......@@ -57,12 +57,13 @@ void Sys_10ms_Tasks(void)
Protocol_Service();
Protocol_Send_Service();
FaultCode_Service(10u);
//FaultCode_Service(10u);
FaultCode_Servers();
}
void Sys_20ms_Tasks(void)
{
//Key_Clear_Time();
//Key_Clear_Time();
//Key_Auto_Save();
Data_Vehicle_Speed_Processing_Service();
Data_Engine_Speed_Processing_Service();
......@@ -74,7 +75,7 @@ void Sys_20ms_Tasks(void)
void Sys_50ms_Tasks(void)
{
LED_Driver_Scan_Refresh();
Telltales_Management();
Gauge_Service();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment