Commit b3aa1672 authored by hu's avatar hu

调整诊断收发

parent c4e8fc54
...@@ -56,7 +56,7 @@ void Can_Init(void) ...@@ -56,7 +56,7 @@ void Can_Init(void)
CANLLCCh0Filter.stRSCANCh2.u32RSCANChRuleSize = CANFD0_CH2_RX_RULE_SIZE; /*通道接收规则条数*/ CANLLCCh0Filter.stRSCANCh2.u32RSCANChRuleSize = CANFD0_CH2_RX_RULE_SIZE; /*通道接收规则条数*/
CANLLCCh0Filter.stRSCANCh2.pfnRSCANConfirmCallBack = 0u; /*发送确认*/ CANLLCCh0Filter.stRSCANCh2.pfnRSCANConfirmCallBack = 0u; /*发送确认*/
CANLLCCh0Filter.stRSCANCh2.pfnRSCANAbortConfirmCallBack = 0u; /*发送中止确认*/ CANLLCCh0Filter.stRSCANCh2.pfnRSCANAbortConfirmCallBack = 0u; /*发送中止确认*/
CANLLCCh0Filter.stRSCANCh2.pfnRSCANReadMsgCallBack = 0u; /*接收完成*/ CANLLCCh0Filter.stRSCANCh2.pfnRSCANReadMsgCallBack = Can_Read_Msg2; /*接收完成*/
CANSTB_OUT = 1U; //CANSTB_OUT CANSTB_OUT = 1U; //CANSTB_OUT
CANSTB2_OUT = 1U; //CANSTB2_OUT CANSTB2_OUT = 1U; //CANSTB2_OUT
...@@ -73,99 +73,36 @@ void Can_DeInit(void) ...@@ -73,99 +73,36 @@ void Can_DeInit(void)
uint8_t Can_Write(_CAN_Msg *Msg) uint8_t Can_Write(_CAN_Msg *Msg)
{ {
uint8_t i = 0u;
CAN_Frame_st_t CANFrame; CAN_Frame_st_t CANFrame;
CANFrame.unCANData.u8CANData[0] = Msg->Msg[0]; for (i = 0; i < 8u; i++)
CANFrame.unCANData.u8CANData[1] = Msg->Msg[1]; {
CANFrame.unCANData.u8CANData[2] = Msg->Msg[2]; CANFrame.unCANData.u8CANData[i] = Msg->Msg[i];
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];
CANFrame.u32CANID = Msg->MsgID; CANFrame.u32CANID = Msg->MsgID;
CANFrame.u8CANLEN = Msg->MsgDLC; 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);
} }
else if (Msg->MsgPro < RSCAN_CHANNEL_BUF_MAX)
/* {
switch (Msg->MsgPro) 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_CH0_Set_FIFO0_Data(&CANFrame);
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;
} }
*/
return 0; return 0;
} }
...@@ -200,6 +137,18 @@ void Can_Read_Msg(uint32_t m_id, uint8_t m_dlc, uint8_t m_Msg[]) ...@@ -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); 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)) if ((m_id == DIAG_ID_Rx_FUN) || (m_id == DIAG_ID_Rx_PHY))
{ {
DoCAN_L_Data_Indication(m_id, m_dlc, m_Msg); DoCAN_L_Data_Indication(m_id, m_dlc, m_Msg);
......
...@@ -46,6 +46,7 @@ void Can_Init(void); ...@@ -46,6 +46,7 @@ void Can_Init(void);
void Can_DeInit(void); void Can_DeInit(void);
uint8_t Can_Write(_CAN_Msg *Msg); 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_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_Abort_Confirm(uint32_t Identifier, uint8_t TransferStatus);
void Can_Sleep_Fun(void); void Can_Sleep_Fun(void);
void Can_SleepController_Fun(void); void Can_SleepController_Fun(void);
......
...@@ -86,7 +86,7 @@ uint8_t Val_EOL_6060_Weigh(void) ...@@ -86,7 +86,7 @@ uint8_t Val_EOL_6060_Weigh(void)
/* 车速里程表 K 值*/ /* 车速里程表 K 值*/
uint16_t Val_EOL_6062_KValue(void) uint16_t Val_EOL_6062_KValue(void)
{ {
uint8_t Res; uint16_t Res;
Res = 0u; Res = 0u;
Res = Res | (EOL_Data_Type.DID_6062[0u] << 8u); Res = Res | (EOL_Data_Type.DID_6062[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_6062[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_6062[1u];
...@@ -136,7 +136,7 @@ uint8_t Val_EOL_606E_Shift(void) ...@@ -136,7 +136,7 @@ uint8_t Val_EOL_606E_Shift(void)
/* 油箱容量设置*/ /* 油箱容量设置*/
uint16_t Val_EOL_606F_FuelTank(void) uint16_t Val_EOL_606F_FuelTank(void)
{ {
uint8_t Res; uint16_t Res;
Res = 0u; Res = 0u;
Res = Res | (EOL_Data_Type.DID_606F[0u] << 8u); Res = Res | (EOL_Data_Type.DID_606F[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_606F[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_606F[1u];
...@@ -194,11 +194,13 @@ uint8_t Val_EOL_6075_SpeedAlarm(void) ...@@ -194,11 +194,13 @@ uint8_t Val_EOL_6075_SpeedAlarm(void)
/* 油箱容量设置*/ /* 油箱容量设置*/
uint32_t Val_EOL_6076_FuelTank(void) uint32_t Val_EOL_6076_FuelTank(void)
{ {
uint8_t Res; uint32_t Res = 0u;
Res = 0u;
Res = Res | (EOL_Data_Type.DID_606F[0u] << 8u); Res = (uint8_t)(EOL_Data_Type.DID_6076[0u] & 0xFFU);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_606F[1u]; Res = ((Res << 8) & 0XFF00u);
Res = ((Res & 0x00FFFFu) << 8) | EOL_Data_Type.DID_606F[2u]; Res = ((Res | EOL_Data_Type.DID_6076[1u]) & 0x00FFFFu);
Res = ((Res << 8u) & 0xFFFF00u);
Res = ((Res | EOL_Data_Type.DID_6076[2u]) & 0xFFFFFFu);
return Res; return Res;
} }
...@@ -213,7 +215,7 @@ uint8_t Val_EOL_60C9_Urea(void) ...@@ -213,7 +215,7 @@ uint8_t Val_EOL_60C9_Urea(void)
/* 主油箱容积*/ /* 主油箱容积*/
uint16_t Val_EOL_60CA_MainFuelTank(void) uint16_t Val_EOL_60CA_MainFuelTank(void)
{ {
uint8_t Res; uint16_t Res;
Res = 0u; Res = 0u;
Res = Res | (EOL_Data_Type.DID_60CA[0u] << 8u); Res = Res | (EOL_Data_Type.DID_60CA[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CA[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CA[1u];
...@@ -223,7 +225,7 @@ uint16_t Val_EOL_60CA_MainFuelTank(void) ...@@ -223,7 +225,7 @@ uint16_t Val_EOL_60CA_MainFuelTank(void)
/* 副油箱容积*/ /* 副油箱容积*/
uint16_t Val_EOL_60CB_AuxiliaryTank(void) uint16_t Val_EOL_60CB_AuxiliaryTank(void)
{ {
uint8_t Res; uint16_t Res;
Res = 0; Res = 0;
Res = Res | (EOL_Data_Type.DID_60CB[0u] << 8u); Res = Res | (EOL_Data_Type.DID_60CB[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CB[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CB[1u];
...@@ -241,7 +243,7 @@ uint8_t Val_EOL_60CC_FuelTankType(void) ...@@ -241,7 +243,7 @@ uint8_t Val_EOL_60CC_FuelTankType(void)
/* 发动机类型*/ /* 发动机类型*/
uint16_t Val_EOL_60CD_EngineType(void) uint16_t Val_EOL_60CD_EngineType(void)
{ {
uint8_t Res; uint16_t Res;
Res = 0; Res = 0;
Res = Res | (EOL_Data_Type.DID_60CD[0u] << 8u); Res = Res | (EOL_Data_Type.DID_60CD[0u] << 8u);
Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CD[1u]; Res = (Res & 0xFF00u) | EOL_Data_Type.DID_60CD[1u];
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
#include "RTE_ADC.h" #include "RTE_ADC.h"
#include "rh850_macros.h" #include "rh850_macros.h"
#include "Telltales_user.h"
/** /**
*正负反馈 *正负反馈
...@@ -342,12 +344,6 @@ typedef struct ...@@ -342,12 +344,6 @@ typedef struct
uint8_t DID_F180[7]; uint8_t DID_F180[7];
uint8_t DID_F181[7]; uint8_t DID_F181[7];
uint8_t DID_F182[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_6000;
uint8_t DID_6001; uint8_t DID_6001;
uint8_t DID_6078; uint8_t DID_6078;
...@@ -396,8 +392,6 @@ typedef struct ...@@ -396,8 +392,6 @@ typedef struct
uint8_t DID_6066; uint8_t DID_6066;
uint8_t DID_6069; uint8_t DID_6069;
uint8_t DID_6077; uint8_t DID_6077;
} BootToDFlashInfoUnion; } BootToDFlashInfoUnion;
typedef struct typedef struct
...@@ -409,7 +403,12 @@ typedef struct ...@@ -409,7 +403,12 @@ typedef struct
uint8_t DID_F190[17]; uint8_t DID_F190[17];
uint8_t DID_F1F0[6]; uint8_t DID_F1F0[6];
uint8_t DID_F1F1[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; } Ser2EToDFlashInfoUnion;
/*typedef struct /*typedef struct
...@@ -502,5 +501,5 @@ void BootToDFlashInfoInit(void); ...@@ -502,5 +501,5 @@ void BootToDFlashInfoInit(void);
void Ser2EToDFlashInfoInit(void); void Ser2EToDFlashInfoInit(void);
void DTCToDFlashInfoInit(void); void DTCToDFlashInfoInit(void);
void DTCConfigurationInit(void); void DTCConfigurationInit(void);
void BootReadFlahInit(void);
#endif #endif
...@@ -99,7 +99,7 @@ void TestDTC(uint16_t timer) ...@@ -99,7 +99,7 @@ void TestDTC(uint16_t timer)
*/ */
void TestDTC_U100700(void) void TestDTC_U100700(void)
{ {
if(DTCList[U100700][1u]) if(DTCList[cnU100700][1u])
{ {
if(getBUS_OFF_FLAG()) if(getBUS_OFF_FLAG())
{ {
...@@ -483,7 +483,7 @@ uint8_t getBusoffStatus(void) ...@@ -483,7 +483,7 @@ uint8_t getBusoffStatus(void)
setDTCEnableTimer(BusOffDTCEnableTimer); setDTCEnableTimer(BusOffDTCEnableTimer);
} }
return getBUS_OFF_Status(); return getBUS_OFF_Status();
return 0; //return 0;
} }
/** /**
......
...@@ -100,7 +100,7 @@ uint8_t UDS_11Service_NRC13_TotalLengthCheck(void) ...@@ -100,7 +100,7 @@ uint8_t UDS_11Service_NRC13_TotalLengthCheck(void)
uint8_t UDS_11Service_NRC22(void) uint8_t UDS_11Service_NRC22(void)
{ {
uint8_t NRC = positiveResponse; uint8_t NRC = positiveResponse;
if(getSpeed() >= 0u) if(getSpeed() > 0u)
{ {
NRC = conditionsNotCorrect; NRC = conditionsNotCorrect;
UDS_Service_Response(0x11u, NEGATIVE_RSP, DIAG_ID_Tx, 1u, (uint8_t*)&NRC); 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_ ...@@ -42,18 +42,7 @@ void UDS_Service_22_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_
clearDiagMSG(); /*清除诊断信息*/ 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服务子功能 *22服务子功能
...@@ -412,7 +401,7 @@ void UDS_22Service_DID_F185(void) ...@@ -412,7 +401,7 @@ void UDS_22Service_DID_F185(void)
*/ */
void UDS_22Service_DID_F187(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); UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 13u, DiagMSG.msgData.Data);
} }
...@@ -422,7 +411,7 @@ void UDS_22Service_DID_F187(void) ...@@ -422,7 +411,7 @@ void UDS_22Service_DID_F187(void)
*/ */
void UDS_22Service_DID_F18A(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); UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 8u, DiagMSG.msgData.Data);
} }
...@@ -432,7 +421,7 @@ void UDS_22Service_DID_F18A(void) ...@@ -432,7 +421,7 @@ void UDS_22Service_DID_F18A(void)
*/ */
void UDS_22Service_DID_F18B(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); UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 4u, DiagMSG.msgData.Data);
} }
...@@ -442,7 +431,7 @@ void UDS_22Service_DID_F18B(void) ...@@ -442,7 +431,7 @@ void UDS_22Service_DID_F18B(void)
*/ */
void UDS_22Service_DID_F18C(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); UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 20u, DiagMSG.msgData.Data);
} }
...@@ -462,7 +451,7 @@ void UDS_22Service_DID_F190(void) ...@@ -462,7 +451,7 @@ void UDS_22Service_DID_F190(void)
*/ */
void UDS_22Service_DID_F193(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); UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 6u, DiagMSG.msgData.Data);
} }
...@@ -472,7 +461,7 @@ void UDS_22Service_DID_F193(void) ...@@ -472,7 +461,7 @@ void UDS_22Service_DID_F193(void)
*/ */
void UDS_22Service_DID_F195(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); UDS_Service_Response(0x22u, POSITIVE_RSP, DIAG_ID_Tx, 2u + 6u, DiagMSG.msgData.Data);
} }
......
...@@ -119,8 +119,8 @@ void UDS_27Service_Sub01(void) ...@@ -119,8 +119,8 @@ void UDS_27Service_Sub01(void)
Ser27_CreateRandomSeed(); Ser27_CreateRandomSeed();
Ser27_FlowCtrl.LV1Seed[0] = ((uint8_t)(Ser27_SeedRandomNumber) ^ 0x31u)+16u ; Ser27_FlowCtrl.LV1Seed[0] = ((uint8_t)(Ser27_SeedRandomNumber) ^ 0x31u)+16u ;
Ser27_FlowCtrl.LV1Seed[1] = ((uint8_t)(Ser27_SeedRandomNumber>>8) ^ 0x56u)+9u ; Ser27_FlowCtrl.LV1Seed[1] = ((uint8_t)(Ser27_SeedRandomNumber>>8) ^ 0x56u)+9u ;
Ser27_FlowCtrl.LV1Seed[0] = 0x49u; //Ser27_FlowCtrl.LV1Seed[0] = 0x49u;
Ser27_FlowCtrl.LV1Seed[1] = 0xB4u; //Ser27_FlowCtrl.LV1Seed[1] = 0xB4u;
} }
else else
{ {
...@@ -174,8 +174,8 @@ void UDS_27Service_Sub03(void) ...@@ -174,8 +174,8 @@ void UDS_27Service_Sub03(void)
Ser27_CreateRandomSeed(); Ser27_CreateRandomSeed();
Ser27_FlowCtrl.LV3Seed[0] = ((uint8_t)(Ser27_SeedRandomNumber) ^ 0x31u)+16u ; Ser27_FlowCtrl.LV3Seed[0] = ((uint8_t)(Ser27_SeedRandomNumber) ^ 0x31u)+16u ;
Ser27_FlowCtrl.LV3Seed[1] = ((uint8_t)(Ser27_SeedRandomNumber>>8) ^ 0x56u)+9u ; Ser27_FlowCtrl.LV3Seed[1] = ((uint8_t)(Ser27_SeedRandomNumber>>8) ^ 0x56u)+9u ;
Ser27_FlowCtrl.LV3Seed[0] = 0x49u; //Ser27_FlowCtrl.LV3Seed[0] = 0x49u;
Ser27_FlowCtrl.LV3Seed[1] = 0xB4u; //Ser27_FlowCtrl.LV3Seed[1] = 0xB4u;
} }
else else
......
...@@ -174,7 +174,7 @@ void UDS_2EService_DID_F183(void) ...@@ -174,7 +174,7 @@ void UDS_2EService_DID_F183(void)
{ {
memcpy(Ser2EToDFlashInfo.DID_F183,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F183)); memcpy(Ser2EToDFlashInfo.DID_F183,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F183));
write2EData(Write2EData); 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) ...@@ -185,7 +185,7 @@ void UDS_2EService_DID_F184(void)
{ {
memcpy(Ser2EToDFlashInfo.DID_F184,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F184)); memcpy(Ser2EToDFlashInfo.DID_F184,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F184));
write2EData(Write2EData); 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) ...@@ -196,7 +196,7 @@ void UDS_2EService_DID_F185(void)
{ {
memcpy(Ser2EToDFlashInfo.DID_F185,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F184)); memcpy(Ser2EToDFlashInfo.DID_F185,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F184));
write2EData(Write2EData); 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) ...@@ -207,7 +207,7 @@ void UDS_2EService_DID_F190(void)
{ {
memcpy(Ser2EToDFlashInfo.DID_F190,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F190)); memcpy(Ser2EToDFlashInfo.DID_F190,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F190));
write2EData(Write2EData); 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) ...@@ -218,7 +218,7 @@ void UDS_2EService_DID_F1F0(void)
{ {
memcpy(Ser2EToDFlashInfo.DID_F1F0,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F1F0)); memcpy(Ser2EToDFlashInfo.DID_F1F0,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F1F0));
write2EData(Write2EData); 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) ...@@ -229,7 +229,7 @@ void UDS_2EService_DID_F1F1(void)
{ {
memcpy(Ser2EToDFlashInfo.DID_F1F1,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F1F1)); memcpy(Ser2EToDFlashInfo.DID_F1F1,DiagMSG.msgData.DidDetail.Data,sizeof(Ser2EToDFlashInfo.DID_F1F1));
write2EData(Write2EData); 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) ...@@ -240,15 +240,6 @@ void UDS_2EService_DID_605C(void)
{ {
uint8_t i; uint8_t i;
memcpy(&EOL_Data_Type.DID_605C,DiagMSG.msgData.DidDetail.Data,1u); 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); write2EData(WriteEOLData);
UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data); UDS_Service_Response(0x2Eu, POSITIVE_RSP, DIAG_ID_Tx, 2u, DiagMSG.msgData.Data);
} }
...@@ -430,7 +421,7 @@ void UDS_2EService_DID_6074(void) ...@@ -430,7 +421,7 @@ void UDS_2EService_DID_6074(void)
{ {
memcpy(&EOL_Data_Type.DID_6074,DiagMSG.msgData.DidDetail.Data,1u); memcpy(&EOL_Data_Type.DID_6074,DiagMSG.msgData.DidDetail.Data,1u);
write2EData(WriteEOLData); 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) ...@@ -119,7 +119,7 @@ uint8_t UDS_2FService_SubParameter_NRC31(void)
} }
if(DiagMSG.msgData.DidDetail.Data[0] == 3u) 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; NRC = positiveResponse;
} }
......
...@@ -60,7 +60,7 @@ void UDS_2FService_DID(void) ...@@ -60,7 +60,7 @@ void UDS_2FService_DID(void)
UDS_2FService_DID_6048(); UDS_2FService_DID_6048();
break; break;
case 0x6091u: case 0x6091u:
UDS_2FService_DID_6048(); UDS_2FService_DID_6091();
break; break;
case 0x6046u: case 0x6046u:
UDS_2FService_DID_6046(); UDS_2FService_DID_6046();
...@@ -136,7 +136,7 @@ void UDS_2FService_DID(void) ...@@ -136,7 +136,7 @@ void UDS_2FService_DID(void)
// case 0x6092u: // case 0x6092u:
// break; // break;
// case 0x6093u: // case 0x6093u:
break; // break;
case 0x6022u: case 0x6022u:
UDS_2FService_DID_6022(); UDS_2FService_DID_6022();
break; break;
......
...@@ -117,7 +117,7 @@ uint8_t UDS_31Service_NRC31(void) ...@@ -117,7 +117,7 @@ uint8_t UDS_31Service_NRC31(void)
uint8_t i; uint8_t i;
uint8_t NRC = requestOutOfRange; uint8_t NRC = requestOutOfRange;
uint16_t temp = 0u; uint16_t temp = 0u;
uint8_t count = 0u; uint8_t count = sizeof(S31DID) / sizeof(S31DID[0]);
for(i = 0u; i < count; ++i) for(i = 0u; i < count; ++i)
{ {
...@@ -262,9 +262,7 @@ uint8_t UDS_31Service_Sub_NRC7E(void) ...@@ -262,9 +262,7 @@ uint8_t UDS_31Service_Sub_NRC7E(void)
uint8_t UDS_31Service_Sub_NRC31(void) uint8_t UDS_31Service_Sub_NRC31(void)
{ {
uint8_t i; uint8_t i;
uint8_t NRC = requestOutOfRange; uint8_t NRC = positiveResponse;
uint16_t temp = 0u;
uint8_t count = 0u;
if((DiagMSG.msgData.S31Detail.SubID == stopRoutine) && (getDID(DiagMSG.msgData.S31Detail.DID_H, DiagMSG.msgData.S31Detail.DID_L) == ActiveIC)){ if((DiagMSG.msgData.S31Detail.SubID == stopRoutine) && (getDID(DiagMSG.msgData.S31Detail.DID_H, DiagMSG.msgData.S31Detail.DID_L) == ActiveIC)){
NRC = requestOutOfRange; NRC = requestOutOfRange;
} }
......
#include "UDS_31Service_Internal.h" #include "UDS_31Service_Internal.h"
#include "Telltales_user.h"
void IndicatorTurnOn(uint8_t ST)
{
}
\ No newline at end of file
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "TYW_stdint.h" #include "TYW_stdint.h"
#include "UDS_Common.h" #include "UDS_Common.h"
void IndicatorTurnOn(uint8_t ST);
#endif #endif
\ No newline at end of file
...@@ -177,6 +177,7 @@ void UDS_31Service_Sub03(void) ...@@ -177,6 +177,7 @@ void UDS_31Service_Sub03(void)
/*87607-16*/ /*87607-16*/
void UDS_31Service_Sub01_DID_C004(void) void UDS_31Service_Sub01_DID_C004(void)
{ {
IndicatorTurnOn(0x01u);
S31DIDC004RequestStatus = 1; S31DIDC004RequestStatus = 1;
DiagMSG.msgData.S31Detail.Data[0] = 0x04u; DiagMSG.msgData.S31Detail.Data[0] = 0x04u;
UDS_Service_Response(0x31u, POSITIVE_RSP, DIAG_ID_Tx, 4u, DiagMSG.msgData.Data); UDS_Service_Response(0x31u, POSITIVE_RSP, DIAG_ID_Tx, 4u, DiagMSG.msgData.Data);
...@@ -212,6 +213,7 @@ void UDS_31Service_Sub01_DID_C014(void) ...@@ -212,6 +213,7 @@ void UDS_31Service_Sub01_DID_C014(void)
/*87607-16*/ /*87607-16*/
void UDS_31Service_Sub02_DID_C004(void) void UDS_31Service_Sub02_DID_C004(void)
{ {
IndicatorTurnOn(0x02u);
S31DIDC004RequestStatus = 0; S31DIDC004RequestStatus = 0;
DiagMSG.msgData.S31Detail.Data[0] = 0x04u; DiagMSG.msgData.S31Detail.Data[0] = 0x04u;
UDS_Service_Response(0x31u, POSITIVE_RSP, DIAG_ID_Tx, 4u, DiagMSG.msgData.Data); UDS_Service_Response(0x31u, POSITIVE_RSP, DIAG_ID_Tx, 4u, DiagMSG.msgData.Data);
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
#ifndef _DIAG_ID_DEF_H_ #ifndef _DIAG_ID_DEF_H_
#define _DIAG_ID_DEF_H_ #define _DIAG_ID_DEF_H_
#define DIAG_ID_Tx 0x18DAFA17u /*发送ID*/ #define DIAG_ID_Tx 0x07E0 /*发送ID*/
#define DIAG_ID_Rx_PHY 0x18DA17FAu /*接收ID,物理寻址*/ #define DIAG_ID_Rx_PHY 0x07E8 /*接收ID,物理寻址*/
#define DIAG_ID_Rx_FUN 0x18DBFFFAu /*接收ID,功能寻址*/ #define DIAG_ID_Rx_FUN 0x0111 /*接收ID,功能寻址*/
#endif #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 ...@@ -160,8 +160,7 @@ void DoCAN_N_USData_Request ( uint32_t N_TAtype, uint8_t MessageData[], uint16_t
/*TpCtrl.TxReq = 1u;*/ /*TpCtrl.TxReq = 1u;*/
DoCAN_Start_Timer ( TIMING_PARA_N_As ); /*启动N_As计时*/ DoCAN_Start_Timer ( TIMING_PARA_N_As ); /*启动N_As计时*/
TpCtrl.Process = TP_TX_INIT; /*数据帧已发出,等待发送完成*/ 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[] ) ...@@ -240,6 +239,8 @@ void DoCAN_L_Data_Request ( uint32_t Identifier, uint8_t dlc, uint8_t Data[] )
{ {
uint8_t i; uint8_t i;
uint8_t temp; uint8_t temp;
_CAN_Msg canMag;
LinkTxCtrl.Identifier = Identifier; LinkTxCtrl.Identifier = Identifier;
for ( i = 0u; i < dlc; i++ ) for ( i = 0u; i < dlc; i++ )
{ {
...@@ -252,9 +253,19 @@ void DoCAN_L_Data_Request ( uint32_t Identifier, uint8_t dlc, uint8_t Data[] ) ...@@ -252,9 +253,19 @@ void DoCAN_L_Data_Request ( uint32_t Identifier, uint8_t dlc, uint8_t Data[] )
{ {
LinkTxCtrl.Data[i] = FILLER_BYTE; 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); //RSCAN0_SendCH0_TxBuf0(LinkTxCtrl.Identifier, 8U, 1U, LinkTxCtrl.Data);
#else #else
Can_Write(&canMag);
//RSCAN0_SendCH0_TxBuf0(LinkTxCtrl.Identifier, 8U, 1U, LinkTxCtrl.Data); //RSCAN0_SendCH0_TxBuf0(LinkTxCtrl.Identifier, 8U, 1U, LinkTxCtrl.Data);
#endif #endif
LinkTxCtrl.Busy = 1u; LinkTxCtrl.Busy = 1u;
......
...@@ -40,4 +40,6 @@ const RSCANFD_Filter_st_t CANFD_RX_RULE_TABLE_LIST[CANFD0_RX_RULE_SIZE] = ...@@ -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*/ {0x98DA17FAul, 0xDFFFFFFFUL, 0x80000000ul, CANFD0_CH0_RX_SELECT},/*23*/
{0x98DBFFFAul, 0xDFFFFFFFUL, 0x80000000ul, CANFD0_CH0_RX_SELECT},/*24*/ {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