Commit b3aa1672 authored by hu's avatar hu

调整诊断收发

parent c4e8fc54
......@@ -56,7 +56,7 @@ void Can_Init(void)
CANLLCCh0Filter.stRSCANCh2.u32RSCANChRuleSize = CANFD0_CH2_RX_RULE_SIZE; /*通道接收规则条数*/
CANLLCCh0Filter.stRSCANCh2.pfnRSCANConfirmCallBack = 0u; /*发送确认*/
CANLLCCh0Filter.stRSCANCh2.pfnRSCANAbortConfirmCallBack = 0u; /*发送中止确认*/
CANLLCCh0Filter.stRSCANCh2.pfnRSCANReadMsgCallBack = 0u; /*接收完成*/
CANLLCCh0Filter.stRSCANCh2.pfnRSCANReadMsgCallBack = Can_Read_Msg2; /*接收完成*/
CANSTB_OUT = 1U; //CANSTB_OUT
CANSTB2_OUT = 1U; //CANSTB2_OUT
......@@ -73,99 +73,36 @@ void Can_DeInit(void)
uint8_t Can_Write(_CAN_Msg *Msg)
{
uint8_t i = 0u;
CAN_Frame_st_t CANFrame;
CANFrame.unCANData.u8CANData[0] = Msg->Msg[0];
CANFrame.unCANData.u8CANData[1] = Msg->Msg[1];
CANFrame.unCANData.u8CANData[2] = Msg->Msg[2];
CANFrame.unCANData.u8CANData[3] = Msg->Msg[3];
CANFrame.unCANData.u8CANData[4] = Msg->Msg[4];
CANFrame.unCANData.u8CANData[5] = Msg->Msg[5];
CANFrame.unCANData.u8CANData[6] = Msg->Msg[6];
CANFrame.unCANData.u8CANData[7] = Msg->Msg[7];
for (i = 0; i < 8u; i++)
{
CANFrame.unCANData.u8CANData[i] = Msg->Msg[i];
}
CANFrame.u32CANID = Msg->MsgID;
CANFrame.u8CANLEN = Msg->MsgDLC;
CANFrame.u8CANFrameIDE = 1u;
CANFrame.u8CANFrameIDE = Msg->MsgStd;
switch (Msg->MsgPro)
{
case 0x00u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_0, &CANFrame); break;
case 0x01u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_1, &CANFrame); break;
case 0x02u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_2, &CANFrame); break;
case 0x03u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_3, &CANFrame); break;
case 0x04u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_4, &CANFrame); break;
case 0x05u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_5, &CANFrame); break;
case 0x06u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_6, &CANFrame); break;
case 0x07u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_7, &CANFrame); break;
case 0x08u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_8, &CANFrame); break;
case 0x09u : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_9, &CANFrame); break;
case 0x0Au : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_10, &CANFrame); break;
case 0x0Bu : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_11, &CANFrame); break;
case 0x0Cu : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_12, &CANFrame); break;
case 0x0Du : RSCAN0_CH0_Set_TXBUF_Data(RSCAN_CHANNEL_BUF_13, &CANFrame); break;
default:
break;
if (Msg->MsgPro < RSCAN_CHANNEL_BUF_2)
{
RSCAN0_CH2_Set_TXBUF_Data(Msg->MsgPro, &CANFrame);
}
/*
switch (Msg->MsgPro)
else if (Msg->MsgPro < RSCAN_CHANNEL_BUF_MAX)
{
RSCAN0_CH0_Set_TXBUF_Data(Msg->MsgPro, &CANFrame);
}
else if ((Msg->MsgPro >= 25u) && (Msg->MsgPro <= 27u))
{
RSCAN0_CH2_Set_FIFO0_Data(&CANFrame);
}
else
{
case 0:
RSCAN0_SendCH0_TxBuf0(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 1:
RSCAN0_SendCH0_TxBuf1(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 2:
RSCAN0_SendCH0_TxBuf2(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 3:
RSCAN0_SendCH0_TxBuf3(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 4:
RSCAN0_SendCH0_TxBuf4(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 5:
RSCAN0_SendCH0_TxBuf5(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 6:
RSCAN0_SendCH0_TxBuf6(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 7:
RSCAN0_SendCH0_TxBuf7(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 8:
RSCAN0_SendCH0_TxBuf8(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 9:
RSCAN0_SendCH0_TxBuf9(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 10:
RSCAN0_SendCH0_TxBuf10(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 11:
RSCAN0_SendCH0_TxBuf11(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 12:
RSCAN0_SendCH0_TxBuf12(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 13:
RSCAN0_SendCH0_TxBuf13(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 14:
RSCAN0_SendCH0_TxBuf14(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
case 15:
RSCAN0_SendCH0_TxBuf15(Msg->MsgID, Msg->MsgDLC, Msg->MsgStd, Msg->Msg);
break;
default:
CAN_CH0_Data_Request(Msg->MsgID, Msg->MsgStd, Msg->MsgRTR, Msg->MsgDLC, Msg->Msg);
break;
RSCAN0_CH0_Set_FIFO0_Data(&CANFrame);
}
*/
return 0;
}
......@@ -200,6 +137,18 @@ void Can_Read_Msg(uint32_t m_id, uint8_t m_dlc, uint8_t m_Msg[])
Co_Can_Buff_Set(Co_Can_ConvertSubID(m_id), m_dlc, m_Msg);
//if ((m_id == DIAG_ID_Rx_FUN) || (m_id == DIAG_ID_Rx_PHY))
//{
// DoCAN_L_Data_Indication(m_id, m_dlc, m_Msg);
//}
}
void Can_Read_Msg2(uint32_t m_id, uint8_t m_dlc, uint8_t m_Msg[])
{
ReceivedMsg(m_id, m_dlc);
//Co_Can_Buff_Set(Co_Can_ConvertSubID(m_id), m_dlc, m_Msg);
if ((m_id == DIAG_ID_Rx_FUN) || (m_id == DIAG_ID_Rx_PHY))
{
DoCAN_L_Data_Indication(m_id, m_dlc, m_Msg);
......
......@@ -46,6 +46,7 @@ void Can_Init(void);
void Can_DeInit(void);
uint8_t Can_Write(_CAN_Msg *Msg);
void Can_Read_Msg(uint32_t m_id, uint8_t m_dlc, uint8_t m_Msg[]);
void Can_Read_Msg2(uint32_t m_id, uint8_t m_dlc, uint8_t m_Msg[]);
void Can_Abort_Confirm(uint32_t Identifier, uint8_t TransferStatus);
void Can_Sleep_Fun(void);
void Can_SleepController_Fun(void);
......
......@@ -86,7 +86,7 @@ uint8_t Val_EOL_6060_Weigh(void)
/* 车速里程表 K 值*/
uint16_t Val_EOL_6062_KValue(void)
{
uint8_t Res;
uint16_t Res;
Res = 0u;
Res = Res | (EOL_Data_Type.DID_6062[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_6062[1u];
......@@ -136,7 +136,7 @@ uint8_t Val_EOL_606E_Shift(void)
/* 油箱容量设置*/
uint16_t Val_EOL_606F_FuelTank(void)
{
uint8_t Res;
uint16_t Res;
Res = 0u;
Res = Res | (EOL_Data_Type.DID_606F[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_606F[1u];
......@@ -194,11 +194,13 @@ uint8_t Val_EOL_6075_SpeedAlarm(void)
/* 油箱容量设置*/
uint32_t Val_EOL_6076_FuelTank(void)
{
uint8_t Res;
Res = 0u;
Res = Res | (EOL_Data_Type.DID_606F[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_606F[1u];
Res = ((Res & 0x00FFFFu) << 8) | EOL_Data_Type.DID_606F[2u];
uint32_t Res = 0u;
Res = (uint8_t)(EOL_Data_Type.DID_6076[0u] & 0xFFU);
Res = ((Res << 8) & 0XFF00u);
Res = ((Res | EOL_Data_Type.DID_6076[1u]) & 0x00FFFFu);
Res = ((Res << 8u) & 0xFFFF00u);
Res = ((Res | EOL_Data_Type.DID_6076[2u]) & 0xFFFFFFu);
return Res;
}
......@@ -213,7 +215,7 @@ uint8_t Val_EOL_60C9_Urea(void)
/* 主油箱容积*/
uint16_t Val_EOL_60CA_MainFuelTank(void)
{
uint8_t Res;
uint16_t Res;
Res = 0u;
Res = Res | (EOL_Data_Type.DID_60CA[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CA[1u];
......@@ -223,7 +225,7 @@ uint16_t Val_EOL_60CA_MainFuelTank(void)
/* 副油箱容积*/
uint16_t Val_EOL_60CB_AuxiliaryTank(void)
{
uint8_t Res;
uint16_t Res;
Res = 0;
Res = Res | (EOL_Data_Type.DID_60CB[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CB[1u];
......@@ -241,7 +243,7 @@ uint8_t Val_EOL_60CC_FuelTankType(void)
/* 发动机类型*/
uint16_t Val_EOL_60CD_EngineType(void)
{
uint8_t Res;
uint16_t Res;
Res = 0;
Res = Res | (EOL_Data_Type.DID_60CD[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CD[1u];
......
......@@ -31,6 +31,8 @@
#include "RTE_ADC.h"
#include "rh850_macros.h"
#include "Telltales_user.h"
/**
*正负反馈
......@@ -342,12 +344,6 @@ typedef struct
uint8_t DID_F180[7];
uint8_t DID_F181[7];
uint8_t DID_F182[7];
uint8_t DID_F187[13];
uint8_t DID_F18A[8];
uint8_t DID_F18B[4];
uint8_t DID_F18C[20];
uint8_t DID_F193[6];
uint8_t DID_F195[6];
uint8_t DID_6000;
uint8_t DID_6001;
uint8_t DID_6078;
......@@ -395,9 +391,7 @@ typedef struct
uint8_t DID_6065;
uint8_t DID_6066;
uint8_t DID_6069;
uint8_t DID_6077;
uint8_t DID_6077;
} BootToDFlashInfoUnion;
typedef struct
......@@ -409,7 +403,12 @@ typedef struct
uint8_t DID_F190[17];
uint8_t DID_F1F0[6];
uint8_t DID_F1F1[6];
uint8_t fill;
uint8_t DID_F187[13];
uint8_t DID_F18A[8];
uint8_t DID_F18B[4];
uint8_t DID_F18C[20];
uint8_t DID_F193[6];
uint8_t DID_F195[6];
} Ser2EToDFlashInfoUnion;
/*typedef struct
......@@ -502,5 +501,5 @@ void BootToDFlashInfoInit(void);
void Ser2EToDFlashInfoInit(void);
void DTCToDFlashInfoInit(void);
void DTCConfigurationInit(void);
void BootReadFlahInit(void);
#endif
......@@ -99,7 +99,7 @@ void TestDTC(uint16_t timer)
*/
void TestDTC_U100700(void)
{
if(DTCList[U100700][1u])
if(DTCList[cnU100700][1u])
{
if(getBUS_OFF_FLAG())
{
......@@ -483,7 +483,7 @@ uint8_t getBusoffStatus(void)
setDTCEnableTimer(BusOffDTCEnableTimer);
}
return getBUS_OFF_Status();
return 0;
//return 0;
}
/**
......
......@@ -100,7 +100,7 @@ uint8_t UDS_11Service_NRC13_TotalLengthCheck(void)
uint8_t UDS_11Service_NRC22(void)
{
uint8_t NRC = positiveResponse;
if(getSpeed() >= 0u)
if(getSpeed() > 0u)
{
NRC = conditionsNotCorrect;
UDS_Service_Response(0x11u, NEGATIVE_RSP, DIAG_ID_Tx, 1u, (uint8_t*)&NRC);
......
......@@ -42,18 +42,7 @@ void UDS_Service_22_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_
clearDiagMSG(); /*清除诊断信息*/
}
const uint8_t Ser22_DID_F113[4] = {0x04, 0x04, 0x04, 0x04}; /*诊断协议版本*/
const uint8_t Ser22_DID_F182[] = ""; /*标定版本号*/
const uint8_t Ser22_DID_F18A[6] = {'4', '5', '1', '0', '0', '3'}; /*供应商识别号*/
const uint8_t Ser22_DID_F18B[4] = {0x20, 0x21, 0x01, 0x19}; /*ECU制造日期*/
const uint8_t Ser22_DID_F18C[] = "0000"; /*ECU序列号*/
const uint8_t Ser22_DID_F195[] = "114"; /*供应商ECU软件版本号*/
const uint8_t Ser22_DID_F1AA[8]; /*ECU核心总成零部件号*/
const uint8_t Ser22_DID_F1AE[] = ""; /*ECU软件零件号*/
const uint8_t Ser22_DID_6209[16] = ""; /*第二软件版本号*/
const uint8_t Ser22_DID_6983[3] = ""; /*抬头显示屏控制器软件版本*/
const uint8_t Ser22_DID_6984[2] = ""; /*抬头显示屏控制器硬件版本*/
const uint8_t Ser22_DID_6985[3] = ""; /*抬头显示屏控制器 EEPROM数据版本*/
/**
*22服务子功能
......@@ -412,7 +401,7 @@ void UDS_22Service_DID_F185(void)
*/
void UDS_22Service_DID_F187(void)
{
memcpy(DiagMSG.msgData.DidDetail.Data, BootToDFlashInfo.DID_F187, sizeof(BootToDFlashInfo.DID_F187));
memcpy(DiagMSG.msgData.DidDetail.Data, Ser2EToDFlashInfo.DID_F187, sizeof(Ser2EToDFlashInfo.DID_F187));
UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 13u, DiagMSG.msgData.Data);
}
......@@ -422,7 +411,7 @@ void UDS_22Service_DID_F187(void)
*/
void UDS_22Service_DID_F18A(void)
{
memcpy(DiagMSG.msgData.DidDetail.Data, BootToDFlashInfo.DID_F18A, sizeof(BootToDFlashInfo.DID_F18A));
memcpy(DiagMSG.msgData.DidDetail.Data, Ser2EToDFlashInfo.DID_F18A, sizeof(Ser2EToDFlashInfo.DID_F18A));
UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 8u, DiagMSG.msgData.Data);
}
......@@ -432,7 +421,7 @@ void UDS_22Service_DID_F18A(void)
*/
void UDS_22Service_DID_F18B(void)
{
memcpy(DiagMSG.msgData.DidDetail.Data, BootToDFlashInfo.DID_F18B, sizeof(BootToDFlashInfo.DID_F18B));
memcpy(DiagMSG.msgData.DidDetail.Data, Ser2EToDFlashInfo.DID_F18B, sizeof(Ser2EToDFlashInfo.DID_F18B));
UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 4u, DiagMSG.msgData.Data);
}
......@@ -442,7 +431,7 @@ void UDS_22Service_DID_F18B(void)
*/
void UDS_22Service_DID_F18C(void)
{
memcpy(DiagMSG.msgData.DidDetail.Data, BootToDFlashInfo.DID_F18C, sizeof(BootToDFlashInfo.DID_F18C));
memcpy(DiagMSG.msgData.DidDetail.Data, Ser2EToDFlashInfo.DID_F18C, sizeof(Ser2EToDFlashInfo.DID_F18C));
UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 20u, DiagMSG.msgData.Data);
}
......@@ -462,7 +451,7 @@ void UDS_22Service_DID_F190(void)
*/
void UDS_22Service_DID_F193(void)
{
memcpy(DiagMSG.msgData.DidDetail.Data, BootToDFlashInfo.DID_F193, sizeof(BootToDFlashInfo.DID_F180));
memcpy(DiagMSG.msgData.DidDetail.Data, Ser2EToDFlashInfo.DID_F193, sizeof(Ser2EToDFlashInfo.DID_F193));
UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 6u, DiagMSG.msgData.Data);
}
......@@ -472,7 +461,7 @@ void UDS_22Service_DID_F193(void)
*/
void UDS_22Service_DID_F195(void)
{
memcpy(DiagMSG.msgData.DidDetail.Data, BootToDFlashInfo.DID_F195, sizeof(BootToDFlashInfo.DID_F180));
memcpy(DiagMSG.msgData.DidDetail.Data, Ser2EToDFlashInfo.DID_F195, sizeof(Ser2EToDFlashInfo.DID_F195));
UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 6u, DiagMSG.msgData.Data);
}
......
......@@ -119,8 +119,8 @@ void UDS_27Service_Sub01(void)
Ser27_CreateRandomSeed();
Ser27_FlowCtrl.LV1Seed[0] = ((uint8_t)(Ser27_SeedRandomNumber) ^ 0x31u)+16u ;
Ser27_FlowCtrl.LV1Seed[1] = ((uint8_t)(Ser27_SeedRandomNumber>>8) ^ 0x56u)+9u ;
Ser27_FlowCtrl.LV1Seed[0] = 0x49u;
Ser27_FlowCtrl.LV1Seed[1] = 0xB4u;
//Ser27_FlowCtrl.LV1Seed[0] = 0x49u;
//Ser27_FlowCtrl.LV1Seed[1] = 0xB4u;
}
else
{
......@@ -174,8 +174,8 @@ void UDS_27Service_Sub03(void)
Ser27_CreateRandomSeed();
Ser27_FlowCtrl.LV3Seed[0] = ((uint8_t)(Ser27_SeedRandomNumber) ^ 0x31u)+16u ;
Ser27_FlowCtrl.LV3Seed[1] = ((uint8_t)(Ser27_SeedRandomNumber>>8) ^ 0x56u)+9u ;
Ser27_FlowCtrl.LV3Seed[0] = 0x49u;
Ser27_FlowCtrl.LV3Seed[1] = 0xB4u;
//Ser27_FlowCtrl.LV3Seed[0] = 0x49u;
//Ser27_FlowCtrl.LV3Seed[1] = 0xB4u;
}
else
......
......@@ -174,7 +174,7 @@ void UDS_2EService_DID_F183(void)
{
memcpy(Ser2EToDFlashInfo.DID_F183,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F183));
write2EData(Write2EData);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 3u, DiagMSG.msgData.Data);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data);
}
/**
......@@ -185,7 +185,7 @@ void UDS_2EService_DID_F184(void)
{
memcpy(Ser2EToDFlashInfo.DID_F184,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F184));
write2EData(Write2EData);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 3u, DiagMSG.msgData.Data);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data);
}
/**
......@@ -196,7 +196,7 @@ void UDS_2EService_DID_F185(void)
{
memcpy(Ser2EToDFlashInfo.DID_F185,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F184));
write2EData(Write2EData);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 3u, DiagMSG.msgData.Data);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data);
}
/**
......@@ -207,7 +207,7 @@ void UDS_2EService_DID_F190(void)
{
memcpy(Ser2EToDFlashInfo.DID_F190,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F190));
write2EData(Write2EData);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 3u, DiagMSG.msgData.Data);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data);
}
/**
......@@ -218,7 +218,7 @@ void UDS_2EService_DID_F1F0(void)
{
memcpy(Ser2EToDFlashInfo.DID_F1F0,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F1F0));
write2EData(Write2EData);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 3u, DiagMSG.msgData.Data);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data);
}
/**
......@@ -229,7 +229,7 @@ void UDS_2EService_DID_F1F1(void)
{
memcpy(Ser2EToDFlashInfo.DID_F1F1,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F1F1));
write2EData(Write2EData);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 3u, DiagMSG.msgData.Data);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data);
}
/**
......@@ -240,15 +240,6 @@ void UDS_2EService_DID_605C(void)
{
uint8_t i;
memcpy(&EOL_Data_Type.DID_605C,DiagMSG.msgData.DidDetail.Data,1u);
memset(&EOL_Data_Type.DID_605C,2,(sizeof(EOL_Data_Type) - 4));
//memset(&Ser2EToDFlashInfo.DID_F183,3,sizeof(Ser2EToDFlashInfo) - 4);
//memset(&Ser27_FlowCtrlCnt.RandNum,1,sizeof(Ser27_FlowCtrlCnt) - 4);
//memset(&DiagFlag.JumpToBootFlag,1,sizeof(DiagFlag) - 4);
//write2EData(Write2EData);
//WriteDFlashData(EEPROM_BLOCK_UDS_S27, (uint32_t *)&Ser27_FlowCtrlCnt.Flag, sizeof(Ser27_FlowCtrlCnt) / 4u, NeedWait);
//WriteDFlashData(EEPROM_BLOCK_UDS_FLAG, (uint32_t *)&DiagFlag.Flag, sizeof(DiagFlag) / 4u, NeedWait);/**/
write2EData(WriteEOLData);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data);
}
......@@ -430,7 +421,7 @@ void UDS_2EService_DID_6074(void)
{
memcpy(&EOL_Data_Type.DID_6074,DiagMSG.msgData.DidDetail.Data,1u);
write2EData(WriteEOLData);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 3u, DiagMSG.msgData.Data);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data);
}
/**
......
......@@ -119,7 +119,7 @@ uint8_t UDS_2FService_SubParameter_NRC31(void)
}
if(DiagMSG.msgData.DidDetail.Data[0] == 3u)
{
if((DiagMSG.msgData.DidDetail.Data[1] == 0x00u) || (DiagMSG.msgData.DidDetail.Data[1] == 0xFFu))
if((DiagMSG.msgData.DidDetail.Data[1] == 0x00u) || (DiagMSG.msgData.DidDetail.Data[1] == 0x01u))
{
NRC = positiveResponse;
}
......
......@@ -60,7 +60,7 @@ void UDS_2FService_DID(void)
UDS_2FService_DID_6048();
break;
case 0x6091u:
UDS_2FService_DID_6048();
UDS_2FService_DID_6091();
break;
case 0x6046u:
UDS_2FService_DID_6046();
......@@ -136,7 +136,7 @@ void UDS_2FService_DID(void)
// case 0x6092u:
// break;
// case 0x6093u:
break;
// break;
case 0x6022u:
UDS_2FService_DID_6022();
break;
......
......@@ -117,7 +117,7 @@ uint8_t UDS_31Service_NRC31(void)
uint8_t i;
uint8_t NRC = requestOutOfRange;
uint16_t temp = 0u;
uint8_t count = 0u;
uint8_t count = sizeof(S31DID) / sizeof(S31DID[0]);
for(i = 0u; i < count; ++i)
{
......@@ -262,9 +262,7 @@ uint8_t UDS_31Service_Sub_NRC7E(void)
uint8_t UDS_31Service_Sub_NRC31(void)
{
uint8_t i;
uint8_t NRC = requestOutOfRange;
uint16_t temp = 0u;
uint8_t count = 0u;
uint8_t NRC = positiveResponse;
if((DiagMSG.msgData.S31Detail.SubID == stopRoutine) && (getDID(DiagMSG.msgData.S31Detail.DID_H, DiagMSG.msgData.S31Detail.DID_L) == ActiveIC)){
NRC = requestOutOfRange;
}
......
#include "UDS_31Service_Internal.h"
#include "Telltales_user.h"
void IndicatorTurnOn(uint8_t ST)
{
}
\ No newline at end of file
......@@ -4,6 +4,7 @@
#include "TYW_stdint.h"
#include "UDS_Common.h"
void IndicatorTurnOn(uint8_t ST);
#endif
\ No newline at end of file
......@@ -177,6 +177,7 @@ void UDS_31Service_Sub03(void)
/*87607-16*/
void UDS_31Service_Sub01_DID_C004(void)
{
IndicatorTurnOn(0x01u);
S31DIDC004RequestStatus = 1;
DiagMSG.msgData.S31Detail.Data[0] = 0x04u;
UDS_Service_Response(0x31u, POSITIVE_RSP, DIAG_ID_Tx, 4u, DiagMSG.msgData.Data);
......@@ -212,6 +213,7 @@ void UDS_31Service_Sub01_DID_C014(void)
/*87607-16*/
void UDS_31Service_Sub02_DID_C004(void)
{
IndicatorTurnOn(0x02u);
S31DIDC004RequestStatus = 0;
DiagMSG.msgData.S31Detail.Data[0] = 0x04u;
UDS_Service_Response(0x31u, POSITIVE_RSP, DIAG_ID_Tx, 4u, DiagMSG.msgData.Data);
......
......@@ -8,8 +8,8 @@
#ifndef _DIAG_ID_DEF_H_
#define _DIAG_ID_DEF_H_
#define DIAG_ID_Tx 0x18DAFA17u /*发送ID*/
#define DIAG_ID_Rx_PHY 0x18DA17FAu /*接收ID,物理寻址*/
#define DIAG_ID_Rx_FUN 0x18DBFFFAu /*接收ID,功能寻址*/
#define DIAG_ID_Tx 0x07E0 /*发送ID*/
#define DIAG_ID_Rx_PHY 0x07E8 /*接收ID,物理寻址*/
#define DIAG_ID_Rx_FUN 0x0111 /*接收ID,功能寻址*/
#endif
\ No newline at end of file
......@@ -160,8 +160,7 @@ void DoCAN_N_USData_Request ( uint32_t N_TAtype, uint8_t MessageData[], uint16_t
/*TpCtrl.TxReq = 1u;*/
DoCAN_Start_Timer ( TIMING_PARA_N_As ); /*启动N_As计时*/
TpCtrl.Process = TP_TX_INIT; /*数据帧已发出,等待发送完成*/
//DoCAN_L_Data_Request(id, dlc, data);
DoCAN_L_Data_Request(id, dlc, data);
}
}
}
......@@ -240,6 +239,8 @@ void DoCAN_L_Data_Request ( uint32_t Identifier, uint8_t dlc, uint8_t Data[] )
{
uint8_t i;
uint8_t temp;
_CAN_Msg canMag;
LinkTxCtrl.Identifier = Identifier;
for ( i = 0u; i < dlc; i++ )
{
......@@ -252,9 +253,19 @@ void DoCAN_L_Data_Request ( uint32_t Identifier, uint8_t dlc, uint8_t Data[] )
{
LinkTxCtrl.Data[i] = FILLER_BYTE;
}
canMag.MsgID = LinkTxCtrl.Identifier ;
canMag.MsgDLC = 8u;
canMag.MsgPro = 0u;
canMag.MsgStd = 0u;
for (i = 0; i < 8u; i++)
{
canMag.Msg[i] = LinkTxCtrl.Data[i];
}
Can_Write(&canMag);
//RSCAN0_SendCH0_TxBuf0(LinkTxCtrl.Identifier, 8U, 1U, LinkTxCtrl.Data);
#else
Can_Write(&canMag);
//RSCAN0_SendCH0_TxBuf0(LinkTxCtrl.Identifier, 8U, 1U, LinkTxCtrl.Data);
#endif
LinkTxCtrl.Busy = 1u;
......
......@@ -40,4 +40,6 @@ const RSCANFD_Filter_st_t CANFD_RX_RULE_TABLE_LIST[CANFD0_RX_RULE_SIZE] =
{0x98DA17FAul, 0xDFFFFFFFUL, 0x80000000ul, CANFD0_CH0_RX_SELECT},/*23*/
{0x98DBFFFAul, 0xDFFFFFFFUL, 0x80000000ul, CANFD0_CH0_RX_SELECT},/*24*/
{0x000007E8ul, 0xDFFFFFFFUL, 0x80000000ul, CANFD0_CH2_RX_SELECT},/* 1*/
{0x00000111ul, 0xDFFFFFFFUL, 0x80000000ul, CANFD0_CH2_RX_SELECT},/* 2*/
};
\ No newline at end of file
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