Commit f7f09de2 authored by 高士达's avatar 高士达

Merge branch 'liang_buf' into '依维柯216变更后'

Liang buf

See merge request !41
parents b7155f76 57722702
......@@ -12,7 +12,7 @@ typedef unsigned int CAN_1939_uint32_t;
typedef unsigned long long CAN_1939_uint64_t;
#endif
/*每个多包信息最长的数据长度*/
#define CAN1939_MESSAGE_LEN 42UL /*需要根据实际项目需求进行相关调整*/
#define CAN1939_MESSAGE_LEN 210UL /*需要根据实际项目需求进行相关调整*/
typedef union {
CAN_1939_uint8_t data[4];
struct
......@@ -26,8 +26,8 @@ typedef union {
} BIT;
} DTC_1939;
typedef union {
DTC_1939 DtcDefine[10]; /*需要根据实际项目需求进行相关调整*/
CAN_1939_uint8_t Data[40]; /*需要根据实际项目需求进行相关调整*/
DTC_1939 DtcDefine[52]; /*需要根据实际项目需求进行相关调整*/
CAN_1939_uint8_t Data[52 * 4]; /*需要根据实际项目需求进行相关调整*/
} DtcData_un_t;
typedef struct
{
......
......@@ -2,8 +2,11 @@
#include "CAN_1939.h"
#include "CAN_1939_user.h"
CAN_1939_uint16_t g_u1618ECFF03TimeoutCount = 0U;
CAN_1939_uint16_t g_u1618ECFF00TimeoutCount = 0U;
const CAN1939_Attribute_st_t stCAN1939Attribute [ CAN1939_SA_MAX ] = {
{0x18ECFF03, 0x18EBFF03, 5000},
{0x1CECFF03, 0x1CEBFF03, 5000},
{0x18ECFF00, 0x18EBFF00, 5000},
};
CAN_1939_uint8_t u8CAN1939RamData [ CAN1939_RAM_DATA_LEN ];
......@@ -54,27 +57,35 @@ void CAN_1939_Process(void)
{
if ( CAN_J1939_Get_Update_Flag(CAN1939_SA_03) == 2UL )
{
CAN_1939_uint8_t u8DataLenBuf = CAN_J1939_Get_Message_Len(CAN1939_SA_03);
CAN_1939_uint8_t *pu8CAN1939DataBuf = CAN_J1939_Get_Message_Content(CAN1939_SA_03);
if ( u8DataLenBuf > 8 )
if(0xFECA == CAN_J1939_Get_Message_PGN(CAN1939_SA_03))
{
u8DataLenBuf = (u8DataLenBuf - 2) / 4;
u8RecDataLamp03 [ 0 ] = *pu8CAN1939DataBuf;
u8RecDataLamp03 [ 1 ] = *(pu8CAN1939DataBuf + 1);
pu8CAN1939DataBuf += 2;
u8DTC0XCEF0E0xx = CAN_1939_DTC_Check(0xCEF0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XB9F0E0xx = CAN_1939_DTC_Check(0XB9F0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XC1F0E0xx = CAN_1939_DTC_Check(0XC1F0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0X66F1E0xx = CAN_1939_DTC_Check(0X66F1E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XB8F0E0xx = CAN_1939_DTC_Check(0XB8F0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XCCF0E0xx = CAN_1939_DTC_Check(0XCCF0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XCD160Bxx = CAN_1939_DTC_Check(0XCD160B00, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
CAN_1939_uint8_t u8DataLenBuf = CAN_J1939_Get_Message_Len(CAN1939_SA_03);
CAN_1939_uint8_t *pu8CAN1939DataBuf = CAN_J1939_Get_Message_Content(CAN1939_SA_03);
if ( u8DataLenBuf > 8 )
{
u8DataLenBuf = (u8DataLenBuf - 2) / 4;
u8RecDataLamp03 [ 0 ] = *pu8CAN1939DataBuf;
u8RecDataLamp03 [ 1 ] = *(pu8CAN1939DataBuf + 1);
pu8CAN1939DataBuf += 2;
u8DTC0XCEF0E0xx = CAN_1939_DTC_Check(0xCEF0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XB9F0E0xx = CAN_1939_DTC_Check(0XB9F0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XC1F0E0xx = CAN_1939_DTC_Check(0XC1F0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0X66F1E0xx = CAN_1939_DTC_Check(0X66F1E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XB8F0E0xx = CAN_1939_DTC_Check(0XB8F0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XCCF0E0xx = CAN_1939_DTC_Check(0XCCF0E000, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
u8DTC0XCD160Bxx = CAN_1939_DTC_Check(0XCD160B00, ( DTC_1939 * )(pu8CAN1939DataBuf), u8DataLenBuf);
}
else
{
u8DataLenBuf = 0;
}
g_u1618ECFF03TimeoutCount = 0;
}
else
{
u8DataLenBuf = 0;
CAN_J1939_18ECFF03_Timeout();
}
CAN_J1939_Clear_Update_Flag(CAN1939_SA_03);
......@@ -95,23 +106,31 @@ void CAN_1939_Process(void)
if ( CAN_J1939_Get_Timeout_Flag(CAN1939_SA_00) )
{
if ( CAN_J1939_Get_Update_Flag(CAN1939_SA_00) == 2UL )
if ( CAN_J1939_Get_Update_Flag(CAN1939_SA_00) == 2UL )
{
CAN_1939_uint8_t u8DataLenBuf = CAN_J1939_Get_Message_Len(CAN1939_SA_00);
CAN_1939_uint8_t *pu8CAN1939DataBuf = CAN_J1939_Get_Message_Content(CAN1939_SA_00);
if ( u8DataLenBuf > 8 )
if(0xFECA == CAN_J1939_Get_Message_PGN(CAN1939_SA_00))
{
u8DataLenBuf = (u8DataLenBuf - 2) / 4;
u8RecDataLamp00 [ 0 ] = *pu8CAN1939DataBuf;
u8RecDataLamp00 [ 1 ] = *(pu8CAN1939DataBuf + 1);
pu8CAN1939DataBuf += 2;
CAN_1939_uint8_t u8DataLenBuf = CAN_J1939_Get_Message_Len(CAN1939_SA_00);
CAN_1939_uint8_t *pu8CAN1939DataBuf = CAN_J1939_Get_Message_Content(CAN1939_SA_00);
if ( u8DataLenBuf > 8 )
{
u8DataLenBuf = (u8DataLenBuf - 2) / 4;
u8RecDataLamp00 [ 0 ] = *pu8CAN1939DataBuf;
u8RecDataLamp00 [ 1 ] = *(pu8CAN1939DataBuf + 1);
pu8CAN1939DataBuf += 2;
}
else
{
u8DataLenBuf = 0;
}
g_u1618ECFF00TimeoutCount = 0;
}
else
{
u8DataLenBuf = 0;
CAN_J1939_18ECFF00_Timeout();
}
CAN_J1939_Clear_Update_Flag(CAN1939_SA_00);
}
}
......@@ -124,12 +143,12 @@ void CAN_1939_Process(void)
void CAN_1939_0X18ECFF03_MSG_CKB_ON_RECEIVE(unsigned char CopyData [])
{
CAN_1939_Receive_Data(CAN1939_SA_03, 0x18ECFF03, CopyData);
CAN_1939_Receive_Data(CAN1939_SA_03, 0x1CECFF03, CopyData);
CAN_J1939_Multipacket_Service(CAN1939_SA_03);
}
void CAN_1939_0X18EBFF03_MSG_CKB_ON_RECEIVE(unsigned char CopyData [])
{
CAN_1939_Receive_Data(CAN1939_SA_03, 0x18EBFF03, CopyData);
CAN_1939_Receive_Data(CAN1939_SA_03, 0x1CEBFF03, CopyData);
CAN_J1939_Multipacket_Service(CAN1939_SA_03);
}
void CAN_1939_0X18FECA03_MSG_CKB_ON_RECEIVE(unsigned char CopyData [])
......@@ -182,3 +201,53 @@ CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_AmberWarnLamp(void)
{
return ((u8RecDataLamp00 [ 0 ] >> 2) & 0X03U);
}
void CAN_J1939_FECA_Timeout_Count(CAN_1939_uint8_t taskTime)
{
if (g_u1618ECFF03TimeoutCount <= (0xFFFF - taskTime))
{
g_u1618ECFF03TimeoutCount += taskTime;
}
if (g_u1618ECFF00TimeoutCount <= (0xFFFF - taskTime))
{
g_u1618ECFF00TimeoutCount += taskTime;
}
}
/*返回值:0--报文超时,1--报文在线*/
CAN_1939_uint8_t CAN_J1939_18ECFF03_Timeout(void)
{
CAN_1939_uint8_t u8Timeout = 1U;
if (g_u1618ECFF03TimeoutCount >= 5000U)
{
u8Timeout = 0U;
//添加掉线处理
u8RecDataLamp03[0] = 0UL;
u8RecDataLamp03[1] = 0UL;
u8DTC0XCEF0E0xx = 0UL;
u8DTC0XB9F0E0xx = 0UL;
u8DTC0XC1F0E0xx = 0UL;
u8DTC0X66F1E0xx = 0UL;
u8DTC0XB8F0E0xx = 0UL;
u8DTC0XCCF0E0xx = 0UL;
u8DTC0XCD160Bxx = 0UL;
}
return u8Timeout;
}
CAN_1939_uint8_t CAN_J1939_18ECFF00_Timeout(void)
{
CAN_1939_uint8_t u8Timeout = 1U;
if (g_u1618ECFF00TimeoutCount >= 5000U)
{
u8Timeout = 0U;
//添加掉线处理
u8RecDataLamp00[0] = 0UL;
u8RecDataLamp00[1] = 0UL;
}
return u8Timeout;
}
......@@ -28,5 +28,10 @@ extern CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF03_Sig_AT_RedStopLamp(void);
extern CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_RedStopLamp(void);
extern CAN_1939_uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_AmberWarnLamp(void);
extern void CAN_J1939_FECA_Timeout_Count(CAN_1939_uint8_t taskTime);
extern CAN_1939_uint8_t CAN_J1939_18ECFF03_Timeout(void);
extern CAN_1939_uint8_t CAN_J1939_18ECFF00_Timeout(void);
#endif
......@@ -249,7 +249,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
5000ul,
0x18ECFF03ul,
0x1CECFF03ul,
(( void * )0),
(( void * )CAN_1939_0X18ECFF03_MSG_CKB_ON_RECEIVE),
(( void * )0),
......@@ -259,7 +259,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
5000ul,
0x18EBFF03ul,
0x1CEBFF03ul,
(( void * )0),
(( void * )CAN_1939_0X18EBFF03_MSG_CKB_ON_RECEIVE),
(( void * )0),
......@@ -1174,12 +1174,12 @@ uint8_t Get_CAN_CH0_ID_18FF9DF1_Sig_Sec_TBOX(void)
uint8_t Get_CAN_CH0_ID_18ECFF03_Sig_test(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0,CAN_CH0_ID_can18ECFF03_Msg_Count, 0u) >> 0u) & 0x01u));
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0,CAN_CH0_ID_can1CECFF03_Msg_Count, 0u) >> 0u) & 0x01u));
}
uint8_t Get_CAN_CH0_ID_18EBFF03_Sig_test(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0,CAN_CH0_ID_can18EBFF03_Msg_Count, 0u) >> 0u) & 0x01u));
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0,CAN_CH0_ID_can1CEBFF03_Msg_Count, 0u) >> 0u) & 0x01u));
}
uint8_t Get_CAN_CH0_ID_18EBFF00_Sig_test(void)
......@@ -1293,11 +1293,11 @@ uint8_t Co_Can_ConvertSubID_CAN_CH0(uint32_t MsgID)
//case CAN_CH0_ID_NM18FFA000_Msg:
//u8Result = CAN_CH0_ID_NM18FFA000_Msg_Count;
break;
case CAN_CH0_ID_can18ECFF03_Msg:
u8Result = CAN_CH0_ID_can18ECFF03_Msg_Count;
case CAN_CH0_ID_can1CECFF03_Msg:
u8Result = CAN_CH0_ID_can1CECFF03_Msg_Count;
break;
case CAN_CH0_ID_can18EBFF03_Msg:
u8Result = CAN_CH0_ID_can18EBFF03_Msg_Count;
case CAN_CH0_ID_can1CEBFF03_Msg:
u8Result = CAN_CH0_ID_can1CEBFF03_Msg_Count;
break;
case CAN_CH0_ID_can18EBFF00_Msg:
u8Result = CAN_CH0_ID_can18EBFF00_Msg_Count;
......
......@@ -36,8 +36,8 @@ typedef enum
CAN_CH0_ID_can18F00503_Msg_Count,
CAN_CH0_ID_can18FF9DF1_Msg_Count,
//CAN_CH0_ID_NM18FFA000_Msg_Count,
CAN_CH0_ID_can18ECFF03_Msg_Count,
CAN_CH0_ID_can18EBFF03_Msg_Count,
CAN_CH0_ID_can1CECFF03_Msg_Count,
CAN_CH0_ID_can1CEBFF03_Msg_Count,
CAN_CH0_ID_can18EBFF00_Msg_Count,
CAN_CH0_ID_can18ECFF00_Msg_Count,
CAN_CH0_ID_can18FE5BE8_Msg_Count,
......@@ -79,8 +79,8 @@ extern const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX
#define CAN_CH0_ID_can18F00503_Msg 0x18F00503ul
#define CAN_CH0_ID_can18FF9DF1_Msg 0x18FF9DF1ul
//#define CAN_CH0_ID_NM18FFA000_Msg 0x18FFA000ul
#define CAN_CH0_ID_can18ECFF03_Msg 0x18ECFF03ul
#define CAN_CH0_ID_can18EBFF03_Msg 0x18EBFF03ul
#define CAN_CH0_ID_can1CECFF03_Msg 0x1CECFF03ul
#define CAN_CH0_ID_can1CEBFF03_Msg 0x1CEBFF03ul
#define CAN_CH0_ID_can18EBFF00_Msg 0x18EBFF00ul
#define CAN_CH0_ID_can18ECFF00_Msg 0x18ECFF00ul
#define CAN_CH0_ID_can18FE5BE8_Msg 0x18FE5BE8ul
......
......@@ -137,6 +137,7 @@ void Sys_Run_Mode_20ms_Tasks_Group0(void)
Data_Vehicle_Speed_Processing_Service();
CAN_J1939_Time_Handle(20U);
CAN_1939_Process();
CAN_J1939_FECA_Timeout_Count(20u);
}
......
......@@ -13,7 +13,7 @@ const uint8_t DID_22_F193[8] = {'V','1','.','1',0x20,0x20,0x20,0x20};
/*ECUHardwareVersionNumberDataIdentifier(软件号)*/
const uint8_t DID_22_F194[16] = {'5','8','0','3','3','1','0','8','1','7',0x20,0x20,0x20,0x20,0x20,0x20};
/*ECUSoftwareVersionNumberDataIdentifier(软件版本号)*/
const uint8_t DID_22_F195[8] = {'V','1','.','6',0x20,0x20,0x20,0x20};
const uint8_t DID_22_F195[8] = {'V','1','.','7',0x20,0x20,0x20,0x20};
/*SystemNameDataIdentifier(ECU名称)*/
const uint8_t DID_22_F197[10] = {'I','C','-','N','S','2','0','8','-','2'};
/*EOLProgrammingDate*/
......
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