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 ] = ...@@ -145,6 +145,17 @@ const st_CANMsgAttribute CAN_MSG_CONST_ARRAY [ CAN_CH0_ID_TOTAL_MAX ] =
(( void * )0), (( 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) ...@@ -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) ...@@ -361,6 +399,9 @@ uint8_t Co_Can_ConvertSubID(uint32_t MsgID)
case CAN_CH0_ID_UDS_REC_Msg: case CAN_CH0_ID_UDS_REC_Msg:
u8Result = CAN_CH0_ID_UDS_REC_Msg_Count; u8Result = CAN_CH0_ID_UDS_REC_Msg_Count;
break; break;
case CAN_BT_MAC_ID:
u8Result = CAN_CH0_ID_BT_MAC_Msg_Count;
break;
default : default :
u8Result = CAN_CH0_ID_TOTAL_MAX; u8Result = CAN_CH0_ID_TOTAL_MAX;
break; break;
......
...@@ -21,6 +21,7 @@ typedef enum ...@@ -21,6 +21,7 @@ typedef enum
CAN_CH0_ID_gm_esp_ee_Msg_Count, CAN_CH0_ID_gm_esp_ee_Msg_Count,
CAN_CH0_ID_UDS_REC_Msg_Count, CAN_CH0_ID_UDS_REC_Msg_Count,
CAN_CH0_ID_BT_MAC_Msg_Count,
CAN_CH0_ID_TOTAL_MAX, CAN_CH0_ID_TOTAL_MAX,
} CAN_MSG_ID_t; } CAN_MSG_ID_t;
...@@ -50,6 +51,7 @@ extern const st_CAN_SendAttribute st_CANSendAttr[ID_SEND_TOTAL] ; ...@@ -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_esp32_soft_Msg 0x0C70FFD4ul
#define CAN_CH0_ID_gm_esp_ee_Msg 0x0C87FFD4ul #define CAN_CH0_ID_gm_esp_ee_Msg 0x0C87FFD4ul
#define CAN_CH0_ID_UDS_REC_Msg 0x794ul #define CAN_CH0_ID_UDS_REC_Msg 0x794ul
#define CAN_BT_MAC_ID 0X0F4254FF
extern uint32_t Get_ID_ODO(void); extern uint32_t Get_ID_ODO(void);
...@@ -85,7 +87,12 @@ extern uint8_t Get_CAN_CH0_ID_794_byte5_Sig(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_byte6_Sig(void);
extern uint8_t Get_CAN_CH0_ID_794_byte7_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) ...@@ -73,10 +73,14 @@ void MENU_CHECK_STEP_ADD(void)
MENU_CHECK_STEP++; MENU_CHECK_STEP++;
// if(MENU_CHECK_STEP > 17) // if(MENU_CHECK_STEP > 17)
if(MENU_CHECK_STEP > 13) if(MENU_CHECK_STEP>16)
{ {
MENU_CHECK_STEP = 0; MENU_CHECK_STEP = 0;
} }
else if(MENU_CHECK_STEP > 13)
{
MENU_CHECK_STEP = 16;
}
} }
void MENU_CHECK_STEP_SUB(void) void MENU_CHECK_STEP_SUB(void)
{ {
...@@ -126,7 +130,7 @@ void HW_CHECK_IPK_EXIST(void) ...@@ -126,7 +130,7 @@ void HW_CHECK_IPK_EXIST(void)
DIAG_BUFER [ 1 ] = 0x00; DIAG_BUFER [ 1 ] = 0x00;
UDS_S_Data_Request(DIAG_ID_Tx, DIAG_BUFER, 2); UDS_S_Data_Request(DIAG_ID_Tx, DIAG_BUFER, 2);
SET_IPK_NONE( ); // SET_IPK_NONE( );
} }
void SET_IPK_NONE(void) void SET_IPK_NONE(void)
......
...@@ -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 0x18DA17FAu /*����ID*/ #define DIAG_ID_Tx 0x714u /*����ID*/
#define DIAG_ID_Rx_PHY 0x18DAFA17u /*����ID,����Ѱַ*/ #define DIAG_ID_Rx_PHY 0x794u /*����ID,����Ѱַ*/
#define DIAG_ID_Rx_FUN 0x18DAFA17u /*����ID,����Ѱַ*/ #define DIAG_ID_Rx_FUN 0x7dfu /*����ID,����Ѱַ*/
#endif #endif
...@@ -4634,7 +4634,8 @@ void Display_Send_Vspead(uint8_t menu) ...@@ -4634,7 +4634,8 @@ void Display_Send_Vspead(uint8_t menu)
//Display_Version_Info(0); //Display_Version_Info(0);
//Send_Init(); //Send_Init();
//Send_ODO_Init(); //Send_ODO_Init();
HW_Static_Current_Check(1); HW_Static_Current_Check(1);
memset(blename,0xFF,5);
break; break;
case 14: case 14:
GUI_Display_Version_Code_Service(25, 20, "Please enter password ", Letter_Num_11, PCodeText_Space_size); 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) ...@@ -109,6 +109,10 @@ void Key_Operation_SW7(Key_Event_en_t enKeyEvent)
if(zhenduanflag != 2 && zhenduanflag != 3) if(zhenduanflag != 2 && zhenduanflag != 3)
{ {
zhenduanflag = 2; zhenduanflag = 2;
FYReadState = FYReadState_ReqF187;
} }
else else
{ {
...@@ -136,6 +140,10 @@ void Key_Operation_SW8(Key_Event_en_t enKeyEvent) ...@@ -136,6 +140,10 @@ void Key_Operation_SW8(Key_Event_en_t enKeyEvent)
if(zhenduanflag != 1) if(zhenduanflag != 1)
{ {
zhenduanflag = 1; zhenduanflag = 1;
FYWriteState = FYWriteState_Req1003;
} }
else else
{ {
......
...@@ -96,7 +96,7 @@ uint8_t Can_Write(_CAN_Msg *Msg) ...@@ -96,7 +96,7 @@ uint8_t Can_Write(_CAN_Msg *Msg)
uint32_t idx; uint32_t idx;
m_msg.u32CANID = Msg->MsgID; m_msg.u32CANID = Msg->MsgID;
m_msg.u8CANLEN = Msg->MsgDLC; m_msg.u8CANLEN = Msg->MsgDLC;
m_msg.u8CANFrameIDE = 1; m_msg.u8CANFrameIDE = 0;
for ( i = 0; i < m_msg.u8CANLEN; i++ ) for ( i = 0; i < m_msg.u8CANLEN; i++ )
{ {
m_msg.unCANData.u8CANData [ i ] = Msg->Msg [ i ]; m_msg.unCANData.u8CANData [ i ] = Msg->Msg [ i ];
...@@ -107,6 +107,8 @@ uint8_t Can_Write(_CAN_Msg *Msg) ...@@ -107,6 +107,8 @@ uint8_t Can_Write(_CAN_Msg *Msg)
} }
RSCAN0_CH4_Set_TXBUF_Data(Msg->MsgPro, &m_msg); RSCAN0_CH4_Set_TXBUF_Data(Msg->MsgPro, &m_msg);
// RSCAN0_CH4_Set_FIFO0_Data(&m_msg);
return 0; return 0;
} }
......
...@@ -32,4 +32,47 @@ void can_submit(void); ...@@ -32,4 +32,47 @@ void can_submit(void);
void Can_Send_0x714(void); void Can_Send_0x714(void);
void Can_Send_0x714_CHECK(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 #endif
\ No newline at end of file
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include "Check_Ctrl.h" #include "Check_Ctrl.h"
#include "string.h" #include "string.h"
#include "COM_CAN.h" #include "COM_CAN.h"
#include "Barcode_Scanner.h"
const uint8_t XorArray[4]= {0x56,0x45,0x73,0x54};//密钥使用 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_ ...@@ -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); UDS_ISO14229_Transfer [ i ] = *(A_Data + i);
} }
if ( UDS_ISO14229_Transfer [ 0 ] == 0x2 )
{
FYWriteState = FYWriteState_Req2701;
}
if ( UDS_ISO14229_Transfer [ 0 ] == 0x3 ) if ( UDS_ISO14229_Transfer [ 0 ] == 0x3 )
{ {
Global_Session = 3; FYWriteState = FYWriteState_Req1002;
if ( loc_Step == 1 )
{
loc_Step = 2;
}
} }
} }
void UDS_Service_51_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_Data []) 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_ ...@@ -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 ]); DIDRequest = (( uint16_t )UDS_ISO14229_Transfer [ 0 ] << 8) | (( uint16_t )UDS_ISO14229_Transfer [ 1 ]);
switch ( DIDRequest ) switch ( DIDRequest )
{ {
case 0xF086: //天有为版本 case 0xF187:
memcpy(InterNal_Version, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2); {
memcpy(&get_num_buf[0], &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
FYReadState = FYReadState_ReqF18A;
break; break;
}
case 0xF18A:
case 0x2014: //天有为版本 {
memcpy(BCM_2014, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2); memcpy(&get_num_buf[UDS_F187_LEN], &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
FYReadState = FYReadState_ReqF18B;
break; break;
}
case SV_DID: //软件版本号 case 0XF18B:
memcpy(SW_Version, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2); {
break; memcpy(&get_num_buf[UDS_F187_LEN + UDS_F18A_LEN], &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
case HV_DID: //硬件版本号 FYReadState = FYReadState_ReqF18C;
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);
break; break;
case CODE_DID: //供应商代码 }
memcpy(SUPPLIER, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
break;
case 0xF202: case 0xF18C:
memcpy(Evade_ODO, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2); {
break; memcpy(&get_num_buf[UDS_F187_LEN + UDS_F18A_LEN + UDS_F18B_LEN], &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
case 0xF203: FYReadState = FYReadState_ReadALL;
memcpy(Risk_Evade, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 2);
break; break;
}
case 0x6200: case 0x6200:
//Global_Session = UDS_ISO14229_Transfer [ 2 ]; //Global_Session = UDS_ISO14229_Transfer [ 2 ];
if ( loc_Step == 0 ) 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_ ...@@ -127,10 +112,6 @@ void UDS_Service_62_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_
loc_Step = 5; loc_Step = 5;
} }
break; break;
case 0x6201: case 0x6201:
LINE_IN_CHECK_BEGIN = 2; LINE_IN_CHECK_BEGIN = 2;
memcpy(Line_IN_St, &UDS_ISO14229_Transfer [ 2 ], Service22DiagDataLength - 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 ...@@ -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 ]; DIDRequest = UDS_ISO14229_Transfer [ 0 ];
switch ( DIDRequest ) switch ( DIDRequest )
{ {
case 3: case 7:
UnLock_Flag = 2; UnLock_Flag = 2;
if ( loc_Step == 2 ) if ( loc_Step == 2 )
{ {
loc_Step = 3; 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; break;
case 4: case 8:
UnLock_Flag = 0x55; UnLock_Flag = 0x55;
if ( loc_Step == 3 ) if ( loc_Step == 3 )
{ {
loc_Step = 4; loc_Step = 4;
} }
memset(seed_buff, 0, 4); memset(seed_value, 0, 4);
memset(KEYBUFFER, 0, 4); memset(key_array, 0, 4);
FYWriteState = FYWriteState_ReqF187;
break; break;
} }
} }
...@@ -216,6 +199,31 @@ void UDS_Service_6E_Indication(uint32_t A_TA_type, uint16_t A_Length, uint8_t A_ ...@@ -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); 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 []) 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