Commit 0b9ea76e authored by 薛晓虎's avatar 薛晓虎

🐞 fix:CAN检测台添加诊断和ble交互

parent ce596ba3
......@@ -145,6 +145,17 @@ const st_CANMsgAttribute CAN_MSG_CONST_ARRAY [ CAN_CH0_ID_TOTAL_MAX ] =
(( void * )0),
},
{
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
{0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u},
5000ul,
0x0F4254FFul,//BT MAC接受ID
(( void * )0),
(( void * )0),
(( void * )0),
},
};
......@@ -307,6 +318,33 @@ uint8_t Get_CAN_CH0_ID_794_byte7_Sig(void)
}
uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte0_Sig(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0_ID_BT_MAC_Msg_Count, 0u) >> 0u) & 0xFFu));
}
uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte1_Sig(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0_ID_BT_MAC_Msg_Count, 1u) >> 0u) & 0xFFu));
}
uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte2_Sig(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0_ID_BT_MAC_Msg_Count, 2u) >> 0u) & 0xFFu));
}
uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte3_Sig(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0_ID_BT_MAC_Msg_Count, 3u) >> 0u) & 0xFFu));
}
uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte4_Sig(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0_ID_BT_MAC_Msg_Count, 4u) >> 0u) & 0xFFu));
}
uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte5_Sig(void)
{
return (((uint8_t)((uint8_t)CAN_MSG_Read(CAN_CH0_ID_BT_MAC_Msg_Count, 5u) >> 0u) & 0xFFu));
}
......@@ -361,6 +399,9 @@ uint8_t Co_Can_ConvertSubID(uint32_t MsgID)
case CAN_CH0_ID_UDS_REC_Msg:
u8Result = CAN_CH0_ID_UDS_REC_Msg_Count;
break;
case CAN_BT_MAC_ID:
u8Result = CAN_CH0_ID_BT_MAC_Msg_Count;
break;
default :
u8Result = CAN_CH0_ID_TOTAL_MAX;
break;
......
......@@ -21,6 +21,7 @@ typedef enum
CAN_CH0_ID_gm_esp_ee_Msg_Count,
CAN_CH0_ID_UDS_REC_Msg_Count,
CAN_CH0_ID_BT_MAC_Msg_Count,
CAN_CH0_ID_TOTAL_MAX,
} CAN_MSG_ID_t;
......@@ -50,6 +51,7 @@ extern const st_CAN_SendAttribute st_CANSendAttr[ID_SEND_TOTAL] ;
#define CAN_CH0_ID_esp32_soft_Msg 0x0C70FFD4ul
#define CAN_CH0_ID_gm_esp_ee_Msg 0x0C87FFD4ul
#define CAN_CH0_ID_UDS_REC_Msg 0x794ul
#define CAN_BT_MAC_ID 0X0F4254FF
extern uint32_t Get_ID_ODO(void);
......@@ -85,7 +87,12 @@ extern uint8_t Get_CAN_CH0_ID_794_byte5_Sig(void);
extern uint8_t Get_CAN_CH0_ID_794_byte6_Sig(void);
extern uint8_t Get_CAN_CH0_ID_794_byte7_Sig(void);
extern uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte0_Sig(void);
extern uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte1_Sig(void);
extern uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte2_Sig(void);
extern uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte3_Sig(void);
extern uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte4_Sig(void);
extern uint8_t Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte5_Sig(void);
......
......@@ -73,10 +73,14 @@ void MENU_CHECK_STEP_ADD(void)
MENU_CHECK_STEP++;
// if(MENU_CHECK_STEP > 17)
if(MENU_CHECK_STEP > 13)
if(MENU_CHECK_STEP>16)
{
MENU_CHECK_STEP = 0;
}
else if(MENU_CHECK_STEP > 13)
{
MENU_CHECK_STEP = 16;
}
}
void MENU_CHECK_STEP_SUB(void)
{
......@@ -126,7 +130,7 @@ void HW_CHECK_IPK_EXIST(void)
DIAG_BUFER [ 1 ] = 0x00;
UDS_S_Data_Request(DIAG_ID_Tx, DIAG_BUFER, 2);
SET_IPK_NONE( );
// SET_IPK_NONE( );
}
void SET_IPK_NONE(void)
......
......@@ -8,8 +8,8 @@
#ifndef _DIAG_ID_DEF_H_
#define _DIAG_ID_DEF_H_
#define DIAG_ID_Tx 0x18DA17FAu /*����ID*/
#define DIAG_ID_Rx_PHY 0x18DAFA17u /*����ID,����Ѱַ*/
#define DIAG_ID_Rx_FUN 0x18DAFA17u /*����ID,����Ѱַ*/
#define DIAG_ID_Tx 0x714u /*����ID*/
#define DIAG_ID_Rx_PHY 0x794u /*����ID,����Ѱַ*/
#define DIAG_ID_Rx_FUN 0x7dfu /*����ID,����Ѱַ*/
#endif
......@@ -4634,7 +4634,8 @@ void Display_Send_Vspead(uint8_t menu)
//Display_Version_Info(0);
//Send_Init();
//Send_ODO_Init();
HW_Static_Current_Check(1);
HW_Static_Current_Check(1);
memset(blename,0xFF,5);
break;
case 14:
GUI_Display_Version_Code_Service(25, 20, "Please enter password ", Letter_Num_11, PCodeText_Space_size);
......
......@@ -109,6 +109,10 @@ void Key_Operation_SW7(Key_Event_en_t enKeyEvent)
if(zhenduanflag != 2 && zhenduanflag != 3)
{
zhenduanflag = 2;
FYReadState = FYReadState_ReqF187;
}
else
{
......@@ -136,6 +140,10 @@ void Key_Operation_SW8(Key_Event_en_t enKeyEvent)
if(zhenduanflag != 1)
{
zhenduanflag = 1;
FYWriteState = FYWriteState_Req1003;
}
else
{
......
......@@ -96,7 +96,7 @@ uint8_t Can_Write(_CAN_Msg *Msg)
uint32_t idx;
m_msg.u32CANID = Msg->MsgID;
m_msg.u8CANLEN = Msg->MsgDLC;
m_msg.u8CANFrameIDE = 1;
m_msg.u8CANFrameIDE = 0;
for ( i = 0; i < m_msg.u8CANLEN; i++ )
{
m_msg.unCANData.u8CANData [ i ] = Msg->Msg [ i ];
......@@ -107,6 +107,8 @@ uint8_t Can_Write(_CAN_Msg *Msg)
}
RSCAN0_CH4_Set_TXBUF_Data(Msg->MsgPro, &m_msg);
// RSCAN0_CH4_Set_FIFO0_Data(&m_msg);
return 0;
}
......
......@@ -32,4 +32,47 @@ void can_submit(void);
void Can_Send_0x714(void);
void Can_Send_0x714_CHECK(void);
#define UDS_F187_LEN 15U
#define UDS_F18A_LEN 5U
#define UDS_F18B_LEN 8U
#define UDS_F18C_LEN 6U
#define BT_ID_TX 0X0F4442FF /*?? ID*/
#define BT_ID_RX 0X0F4254FF /*BT MAC ID*/
#define BLE_ID_TX 0x0C75FFD3 /*BLE MAC ID*/
#define LY_CON_ID 0x0C21FFD3 /*???? ID*/
typedef enum
{
FYReadState_ReqF187,
FYReadState_ReqF18A,
FYReadState_ReqF18B,
FYReadState_ReqF18C,
FYReadState_ReadALL,
FYReadState_Idel,
}_FYReadState_st;
typedef enum
{
FYWriteState_Req1003,
FYWriteState_Req1002,
FYWriteState_Req2701,
FYWriteState_Req2702,
FYWriteState_ReqF187,
FYWriteState_ReqF18A,
FYWriteState_ReqF18B,
FYWriteState_ReqF18C,
FYWriteState_WriteALL,
FYWriteState_Idel,
}_FYWriteState_st;
extern uint8_t FYReadState;
extern uint8_t FYWriteState;
void UDS_FiveYardsRead(void );
void UDS_FiveYardsWrite(void );
void Get_Ble_Address(void);
#endif
\ No newline at end of file
......@@ -3,6 +3,7 @@
#include "Check_Ctrl.h"
#include "string.h"
#include "COM_CAN.h"
#include "Barcode_Scanner.h"
const uint8_t XorArray[4]= {0x56,0x45,0x73,0x54};//密钥使用
......@@ -21,13 +22,14 @@ void UDS_Service_50_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_
{
UDS_ISO14229_Transfer [ i ] = *(A_Data + i);
}
if ( UDS_ISO14229_Transfer [ 0 ] == 0x2 )
{
FYWriteState = FYWriteState_Req2701;
}
if ( UDS_ISO14229_Transfer [ 0 ] == 0x3 )
{
Global_Session = 3;
if ( loc_Step == 1 )
{
loc_Step = 2;
}
FYWriteState = FYWriteState_Req1002;
}
}
void UDS_Service_51_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_Data [])
......@@ -76,50 +78,33 @@ void UDS_Service_62_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_
DIDRequest = (( uint16_t )UDS_ISO14229_Transfer [ 0 ] << 8) | (( uint16_t )UDS_ISO14229_Transfer [ 1 ]);
switch ( DIDRequest )
{
case 0xF086: //天有为版本
memcpy(InterNal_Version, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
case 0xF187:
{
memcpy(&get_num_buf[0], &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
FYReadState = FYReadState_ReqF18A;
break;
}
case 0x2014: //天有为版本
memcpy(BCM_2014, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
case 0xF18A:
{
memcpy(&get_num_buf[UDS_F187_LEN], &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
FYReadState = FYReadState_ReqF18B;
break;
}
case SV_DID: //软件版本号
memcpy(SW_Version, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
break;
case HV_DID: //硬件版本号
memcpy(HW_Version, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
break;
case PV_DID: //零件号
memcpy(Part_Version, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
break;
case FUEL_DID: //燃油阻值
RES_CHECK_BEGIN = 2u;
memcpy(Res_St, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
break;
case DATE_DID: //制造日期
memcpy(Made_Date, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
case 0XF18B:
{
memcpy(&get_num_buf[UDS_F187_LEN + UDS_F18A_LEN], &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
FYReadState = FYReadState_ReqF18C;
break;
case CODE_DID: //供应商代码
memcpy(SUPPLIER, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
break;
}
case 0xF202:
memcpy(Evade_ODO, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
break;
case 0xF203:
memcpy(Risk_Evade, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
case 0xF18C:
{
memcpy(&get_num_buf[UDS_F187_LEN + UDS_F18A_LEN + UDS_F18B_LEN], &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
FYReadState = FYReadState_ReadALL;
break;
}
case 0x6200:
//Global_Session = UDS_ISO14229_Transfer [ 2 ];
if ( loc_Step == 0 )
......@@ -127,10 +112,6 @@ void UDS_Service_62_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_
loc_Step = 5;
}
break;
case 0x6201:
LINE_IN_CHECK_BEGIN = 2;
memcpy(Line_IN_St, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
......@@ -160,23 +141,25 @@ void UDS_Service_67_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t
DIDRequest = UDS_ISO14229_Transfer [ 0 ];
switch ( DIDRequest )
{
case 3:
case 7:
UnLock_Flag = 2;
if ( loc_Step == 2 )
{
loc_Step = 3;
}
memcpy(seed_buff, &UDS_ISO14229_Transfer [ 1 ], 4);
Ser27_CalculateKeyLV1(seed_buff, KEYBUFFER);//密钥计算
memcpy(seed_value, &UDS_ISO14229_Transfer [ 1 ], 4);
FYWriteState = FYWriteState_Req2702;
break;
case 4:
case 8:
UnLock_Flag = 0x55;
if ( loc_Step == 3 )
{
loc_Step = 4;
}
memset(seed_buff, 0, 4);
memset(KEYBUFFER, 0, 4);
memset(seed_value, 0, 4);
memset(key_array, 0, 4);
FYWriteState = FYWriteState_ReqF187;
break;
}
}
......@@ -216,6 +199,31 @@ void UDS_Service_6E_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_
{
UDS_ISO14229_Transfer [ i ] = *(A_Data + i);
}
DIDRequest = (( uint16_t )UDS_ISO14229_Transfer [ 0 ] << 8) | (( uint16_t )UDS_ISO14229_Transfer [ 1 ]);
switch ( DIDRequest )
{
case 0xF187:
{
FYWriteState = FYWriteState_ReqF18A;
break;
}
case 0xF18A:
{
FYWriteState = FYWriteState_ReqF18B;
break;
}
case 0xF18B:
{
FYWriteState = FYWriteState_ReqF18C;
break;
}
case 0xF18C:
{
FYWriteState = FYWriteState_WriteALL;
break;
}
}
}
void UDS_Service_7E_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_Data [])
{
......
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