Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiancetai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈家乐
jiancetai
Commits
0b9ea76e
Commit
0b9ea76e
authored
May 24, 2025
by
薛晓虎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🐞
fix:CAN检测台添加诊断和ble交互
parent
ce596ba3
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
632 additions
and
585 deletions
+632
-585
CAN_Communication_Matrix.c
...test_bench/source/Appliciation/CAN_Communication_Matrix.c
+41
-0
CAN_Communication_Matrix.h
...test_bench/source/Appliciation/CAN_Communication_Matrix.h
+8
-1
Check_Ctrl.c
YueJin_test_bench/source/Appliciation/Check_Ctrl.c
+6
-2
Diag_ID_Def.h
YueJin_test_bench/source/Appliciation/Diag_ID_Def.h
+3
-3
Display_Info.c
YueJin_test_bench/source/Appliciation/Display_Info.c
+2
-1
Key_user.c
YueJin_test_bench/source/Appliciation/Key_user.c
+8
-0
RTE_CAN.c
YueJin_test_bench/source/Appliciation/RTE_CAN.c
+3
-1
Task.c
YueJin_test_bench/source/Appliciation/Task.c
+458
-525
Task.h
YueJin_test_bench/source/Appliciation/Task.h
+43
-0
UDS_ISO14229_Client.c
YueJin_test_bench/source/Appliciation/UDS_ISO14229_Client.c
+60
-52
No files found.
YueJin_test_bench/source/Appliciation/CAN_Communication_Matrix.c
View file @
0b9ea76e
...
...
@@ -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
;
...
...
YueJin_test_bench/source/Appliciation/CAN_Communication_Matrix.h
View file @
0b9ea76e
...
...
@@ -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
);
...
...
YueJin_test_bench/source/Appliciation/Check_Ctrl.c
View file @
0b9ea76e
...
...
@@ -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
)
...
...
YueJin_test_bench/source/Appliciation/Diag_ID_Def.h
View file @
0b9ea76e
...
...
@@ -8,8 +8,8 @@
#ifndef _DIAG_ID_DEF_H_
#define _DIAG_ID_DEF_H_
#define DIAG_ID_Tx 0x
18DA17FA
u
/*����ID*/
#define DIAG_ID_Rx_PHY 0x
18DAFA17
u
/*����ID,����Ѱַ*/
#define DIAG_ID_Rx_FUN 0x
18DAFA17
u
/*����ID,����Ѱַ*/
#define DIAG_ID_Tx 0x
714
u
/*����ID*/
#define DIAG_ID_Rx_PHY 0x
794
u
/*����ID,����Ѱַ*/
#define DIAG_ID_Rx_FUN 0x
7df
u
/*����ID,����Ѱַ*/
#endif
YueJin_test_bench/source/Appliciation/Display_Info.c
View file @
0b9ea76e
...
...
@@ -4635,6 +4635,7 @@ void Display_Send_Vspead(uint8_t menu)
//Send_Init();
//Send_ODO_Init();
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
);
...
...
YueJin_test_bench/source/Appliciation/Key_user.c
View file @
0b9ea76e
...
...
@@ -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
{
...
...
YueJin_test_bench/source/Appliciation/RTE_CAN.c
View file @
0b9ea76e
...
...
@@ -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
;
}
...
...
YueJin_test_bench/source/Appliciation/Task.c
View file @
0b9ea76e
...
...
@@ -22,6 +22,8 @@
#include "RTE_WDT.h"
#include "R485_Communication_Matrix.h"
#include "CAN_Communication_Matrix.h"
// #include <stdio.h>
// #include <stdint.h>
/*******************************************************************************
* *
* ϵͳ��������ģʽ(SYS_MODE_OFF / SYS_MODE_ON / SYS_MODE_STANDBY )�����б� *
...
...
@@ -40,9 +42,14 @@ uint8_t startONfalg = 0;
uint32_t
startIGONtime
=
0
;
uint8_t
compareresult
;
extern
uint8_t
keyopenble
;
uint8_t
Ble_Can_name
[
5
];
const
unsigned
char
gImage_cuo1
[]
=
{
24
,
24
,
0X00
,
0X00
,
0X00
,
0X00
,
0X30
,
0X70
,
0XE0
,
0XC0
,
0X80
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X80
,
0XC0
,
0X70
,
0X30
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X01
,
0X83
,
0XC7
,
0X66
,
0X38
,
0X38
,
0X7C
,
0XE6
,
0XC3
,
0X81
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X0C
,
0X0C
,
0X06
,
0X03
,
0X01
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X01
,
0X03
,
0X07
,
0X0E
,
0X0C
,
0X00
,
0X00
,
0X00
,
0X00
,};
const
unsigned
char
gImage_dui1
[]
=
{
24
,
24
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X80
,
0XC0
,
0XE0
,
0X40
,
0X00
,
0X00
,
0X00
,
0X00
,
0X08
,
0X18
,
0X30
,
0X70
,
0XC0
,
0X80
,
0X00
,
0X00
,
0X80
,
0XC0
,
0XE0
,
0X70
,
0X38
,
0X1C
,
0X0E
,
0X07
,
0X03
,
0X01
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X01
,
0X03
,
0X07
,
0X03
,
0X01
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,
0X00
,};
static
uint8
bcd2ascii
[
16
]
=
{
'0'
,
'1'
,
'2'
,
'3'
,
'4'
,
'5'
,
'6'
,
'7'
,
'8'
,
'9'
,
'A'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
};
void
Get_PN_msg
(
void
);
void
OPE_BLE_Address
(
void
);
void
Send_BT_MAC
(
void
);
void
LY_Connect
(
void
);
void
Sys_Run_Mode_Pseudo_Real_Time_Tasks
(
void
)
{
SD_FMQ
=
1
;
...
...
@@ -68,6 +75,9 @@ void Sys_Run_Mode_2ms_Tasks_Group(void)
RTE_ADC_Services
(
);
Get_static_Current
();
// can_std_io = 0;
UDS_FiveYardsRead
();
UDS_FiveYardsWrite
();
}
/*==============================================================================
...
...
@@ -292,13 +302,15 @@ void Sys_Run_Mode_10ms_Tasks_Group(void)
{
// R485_Send_0x47();
// comparestart = 0;
Can_Send_0x714
();
//
Can_Send_0x714();
}
else
if
(
zhenduanflag
==
2
)
{
// R485_Sendcheck_0x47();
Can_Send_0x714_CHECK
();
Get_PN_msg
();
// Can_Send_0x714_CHECK();
// Get_PN_msg();
}
else
{
...
...
@@ -389,7 +401,7 @@ void Sys_Run_Mode_50ms_Tasks_Group(void)
// timerms = 0;
// }
//
// Read_IPK_Session_Type( );//请求仪表发送 软硬件版本号 等数据。
// Read_IPK_Session_Type( );//请求仪表发送 软硬件版本号 等数据。
// }
if
(
timerms
>=
60
)
...
...
@@ -411,9 +423,15 @@ uint8_t compareresult;
uint8_t
flashtime
=
0
;
uint8_t
showtime
=
0
;
uint8_t
bleuarttime
=
0
;
uint8_t
CANOpenBle
[
17
]
=
{
0
};
void
Sys_Run_Mode_100ms_Tasks_Group
(
void
)
{
static
uint32_t
loc_timer
=
0
;
static
uint32_t
BleCan_timer
=
0
;
static
uint32_t
BTCan_timer
=
0
;
static
uint32_t
LY_Connect_Can_timer
=-
0
;
loc_timer
++
;
if
(
loc_timer
>=
3
)
{
...
...
@@ -423,7 +441,27 @@ void Sys_Run_Mode_100ms_Tasks_Group(void)
}
Display_PageNum
();
BleCan_timer
++
;
if
(
BleCan_timer
>=
10
)
{
BleCan_timer
=
0
;
OPE_BLE_Address
();
Get_Ble_Address
();
}
BTCan_timer
++
;
if
(
BTCan_timer
>=
20
)
{
BTCan_timer
=
0
;
Send_BT_MAC
();
}
LY_Connect_Can_timer
++
;
if
(
LY_Connect_Can_timer
>=
2
)
{
LY_Connect_Can_timer
=
0
;
LY_Connect
();
}
// Freln_Duty_HZ_Service();
if
(
RS485_send_time
<
0xFFFFFFFF
)
...
...
@@ -748,8 +786,14 @@ void can_submit(void)
uint8_t
data19
[
8
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
//0x0C21FFD3
CAN_Frame_st_t
m_msg25
;
//密码
uint8_t
data25
[
8
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
//0x0C20FFD1
if
(
MENU_CHECK_STEP
!=
16
)
{
CANOpenBle
[
8
]
=
0
;
UART_Ch2_Send_Multiple_Byte
(
CANOpenBle
,
sizeof
(
CANOpenBle
));
}
switch
(
MENU_CHECK_STEP
)
{
case
0
:
...
...
@@ -1561,6 +1605,9 @@ CAN_Frame_st_t m_msg25;//密码
init_CAN_Frame
(
&
m_msg18
,
0x0CA0FFDC
,
8
,
1
,
data18
);
// abs驱动tcs
break
;
case
16
:
CANOpenBle
[
8
]
=
1
;
UART_Ch2_Send_Multiple_Byte
(
CANOpenBle
,
sizeof
(
CANOpenBle
));
default:
init_CAN_Frame
(
&
m_msg1
,
0x0C20FFD2
,
8
,
1
,
data1
);
// 车速
...
...
@@ -1603,6 +1650,7 @@ CAN_Frame_st_t m_msg25;//密码
}
if
(
MENU_CHECK_STEP
==
0
)
{
//can_mid(m_msg1);
;
}
else
if
(
MENU_CHECK_STEP
==
14
)
...
...
@@ -1711,264 +1759,158 @@ CAN_Frame_st_t m_msg25;//密码
uint8_t
test
[
20
]
=
{
0
};
void
Can_Send_0x714
(
void
)
{
}
switch
(
zhenduansendStep
)
{
case
0
:
// if(barcode_Msg[0] != 51 && barcode_Msg[1] != 55)
// {
// zhenduansendStep = 0;
// break;
// }
data20
[
0
]
=
0x02
;
data20
[
1
]
=
0x10
;
data20
[
2
]
=
0x03
;
data20
[
3
]
=
0xAA
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
//诊断
can_mid
(
m_msg20
);
zhenduansendStep
++
;
break
;
case
1
:
data20
[
0
]
=
0x02
;
data20
[
1
]
=
0x27
;
data20
[
2
]
=
0x01
;
data20
[
3
]
=
0xAA
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
//诊断
can_mid
(
m_msg20
);
seed_value
[
0
]
=
CAN_MSG_Read
(
11
,
3
);
seed_value
[
1
]
=
CAN_MSG_Read
(
11
,
4
);
seed_value
[
2
]
=
CAN_MSG_Read
(
11
,
5
);
seed_value
[
3
]
=
CAN_MSG_Read
(
11
,
6
);
zhenduansendStep
++
;
break
;
case
2
:
seed_value
[
0
]
=
CAN_MSG_Read
(
11
,
3
);
seed_value
[
1
]
=
CAN_MSG_Read
(
11
,
4
);
seed_value
[
2
]
=
CAN_MSG_Read
(
11
,
5
);
seed_value
[
3
]
=
CAN_MSG_Read
(
11
,
6
);
if
(
CAN_MSG_Read
(
11
,
1
)
==
0x67
&&
CAN_MSG_Read
(
11
,
2
)
==
0x01
)
uint8_t
isDateCorrect
(
uint8_t
date
[])
{
uint8_t
i
;
uint8_t
enResult
=
0
;
uint16_t
yearValue
=
0
;
uint8_t
monthValue
=
0
;
uint8_t
dayValue
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
get_key_value
();
zhenduansendStep
++
;
}
else
if
(((
date
[
i
]
&
0xF
)
>
9
)
||
(((
date
[
i
]
>>
4
)
&
0xF
)
>
9
))
{
// seed_value[0] = CAN_MSG_Read(11,1);
// seed_value[1] = CAN_MSG_Read(11,2);
// zhenduansendStep--;
return
;
}
//Gen_TimeDelay(10000, 50);
break
;
case
3
:
//Gen_TimeDelay(10000, 50);
data20
[
0
]
=
0x06
;
data20
[
1
]
=
0x27
;
data20
[
2
]
=
0x02
;
data20
[
3
]
=
key_array
[
0
];
data20
[
4
]
=
key_array
[
1
];
data20
[
5
]
=
key_array
[
2
];
data20
[
6
]
=
key_array
[
3
];
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
//诊断
can_mid
(
m_msg20
);
zhenduansendStep
++
;
//Gen_TimeDelay(10000, 50);
enResult
=
1
;
// not BCD, break loop and return.
break
;
case
4
:
if
(
CAN_MSG_Read
(
11
,
1
)
==
0x67
&&
CAN_MSG_Read
(
11
,
2
)
==
0x02
)
{
zhenduansendStep
++
;
}
else
{
return
;
}
case
5
:
data20
[
0
]
=
0x10
;
data20
[
1
]
=
0x12
;
data20
[
2
]
=
0x2E
;
data20
[
3
]
=
0xF1
;
data20
[
4
]
=
0x87
;
data20
[
5
]
=
barcode_Msg
[
0
];
data20
[
6
]
=
barcode_Msg
[
1
];
data20
[
7
]
=
barcode_Msg
[
2
];
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
//Gen_TimeDelay(10000, 50);
if
(
enResult
==
0
)
{
yearValue
=
(
date
[
3
]
<<
8
)
+
date
[
2
];
monthValue
=
date
[
1
];
dayValue
=
date
[
0
];
yearValue
=
((
yearValue
>>
12
)
&
0xF
)
*
1000
+
((
yearValue
>>
8
)
&
0xF
)
*
100
+
((
yearValue
>>
4
)
&
0xF
)
*
10
+
(
yearValue
&
0xF
);
monthValue
=
((
monthValue
>>
4
)
&
0xF
)
*
10
+
(
monthValue
&
0xF
);
dayValue
=
((
dayValue
>>
4
)
&
0xF
)
*
10
+
(
dayValue
&
0xF
);
case
6
:
data20
[
0
]
=
0x21
;
data20
[
1
]
=
barcode_Msg
[
3
];
data20
[
2
]
=
barcode_Msg
[
4
];
data20
[
3
]
=
barcode_Msg
[
5
];
data20
[
4
]
=
barcode_Msg
[
6
];
data20
[
5
]
=
barcode_Msg
[
7
];
data20
[
6
]
=
barcode_Msg
[
8
];
data20
[
7
]
=
barcode_Msg
[
9
];
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
can_mid
(
m_msg20
);
zhenduansendStep
++
;
case
7
:
data20
[
0
]
=
0x22
;
data20
[
1
]
=
barcode_Msg
[
10
];
data20
[
2
]
=
barcode_Msg
[
11
];
data20
[
3
]
=
barcode_Msg
[
12
];
data20
[
4
]
=
barcode_Msg
[
13
];
data20
[
5
]
=
barcode_Msg
[
14
];
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
can_mid
(
m_msg20
);
zhenduansendStep
++
;
Gen_TimeDelay
(
10000
,
50
);
case
8
:
if
(
CAN_MSG_Read
(
11
,
0
)
==
0x03
&&
CAN_MSG_Read
(
11
,
1
)
==
0x6E
)
if
((
monthValue
>=
1
)
&&
(
monthValue
<=
13
))
{
if
(
monthValue
==
2
)
{
if
((
yearValue
%
400
==
0
)
||
((
yearValue
%
100
!=
0
)
&&
(
yearValue
%
4
==
0
)))
// leap year
{
zhenduansendStep
++
;
if
((
dayValue
==
0
)
||
(
dayValue
>
29
))
{
enResult
=
4
;
// incorrect day
}
}
else
{
return
;
if
((
dayValue
==
0
)
||
(
dayValue
>
28
))
{
enResult
=
4
;
// incorrect day
}
break
;
case
9
:
data20
[
0
]
=
0x10
;
data20
[
1
]
=
0x08
;
data20
[
2
]
=
0x2E
;
data20
[
3
]
=
0xF1
;
data20
[
4
]
=
0x8A
;
data20
[
5
]
=
barcode_Msg
[
15
];
data20
[
6
]
=
barcode_Msg
[
16
];
data20
[
7
]
=
barcode_Msg
[
17
];
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
break
;
case
10
:
data20
[
0
]
=
0x21
;
data20
[
1
]
=
barcode_Msg
[
18
];
data20
[
2
]
=
barcode_Msg
[
19
];
data20
[
3
]
=
0xAA
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
break
;
case
11
:
if
(
CAN_MSG_Read
(
11
,
0
)
==
0x03
&&
CAN_MSG_Read
(
11
,
1
)
==
0x6E
&&
CAN_MSG_Read
(
11
,
3
)
==
0x8A
)
}
}
else
if
((
monthValue
==
4
)
||
(
monthValue
==
6
)
||
(
monthValue
==
9
)
||
(
monthValue
==
11
))
{
if
((
dayValue
==
0
)
||
(
dayValue
>
30
))
{
zhenduansendStep
++
;
enResult
=
4
;
// incorrect day
}
}
else
{
return
;
}
break
;
case
12
:
data20
[
0
]
=
0x07
;
data20
[
1
]
=
0x2E
;
data20
[
2
]
=
0xF1
;
data20
[
3
]
=
0x99
;
data20
[
4
]
=
(
barcode_Msg
[
20
]
-
0x30
)
>>
4
|
(
barcode_Msg
[
21
]
-
0x30
);
data20
[
5
]
=
(
barcode_Msg
[
22
]
-
0x30
)
>>
4
|
(
barcode_Msg
[
23
]
-
0x30
);
data20
[
6
]
=
(
barcode_Msg
[
24
]
-
0x30
)
>>
4
|
(
barcode_Msg
[
25
]
-
0x30
);
data20
[
7
]
=
(
barcode_Msg
[
26
]
-
0x30
)
>>
4
|
(
barcode_Msg
[
27
]
-
0x30
);
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
break
;
case
13
:
Gen_TimeDelay
(
10000
,
50
);
if
(
CAN_MSG_Read
(
11
,
0
)
==
0x03
&&
CAN_MSG_Read
(
11
,
1
)
==
0x6E
&&
CAN_MSG_Read
(
11
,
3
)
==
0x99
)
if
((
dayValue
==
0
)
||
(
dayValue
>
31
))
{
zhenduansendStep
++
;
enResult
=
4
;
// incorrect day
}
}
}
else
{
return
;
enResult
=
3
;
// incorrect month
}
}
break
;
case
14
:
data20
[
0
]
=
0x10
;
data20
[
1
]
=
0x09
;
data20
[
2
]
=
0x2E
;
data20
[
3
]
=
0xF1
;
data20
[
4
]
=
0x8C
;
data20
[
5
]
=
barcode_Msg
[
28
]
-
0x30
;
data20
[
6
]
=
barcode_Msg
[
29
]
-
0x30
;
data20
[
7
]
=
barcode_Msg
[
30
]
-
0x30
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
break
;
case
15
:
data20
[
0
]
=
0x21
;
data20
[
1
]
=
barcode_Msg
[
31
]
-
0x30
;
data20
[
2
]
=
barcode_Msg
[
32
]
-
0x30
;
data20
[
3
]
=
barcode_Msg
[
33
]
-
0x30
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
break
;
case
16
:
Gen_TimeDelay
(
10000
,
50
);
if
(
CAN_MSG_Read
(
11
,
0
)
==
0x03
&&
CAN_MSG_Read
(
11
,
1
)
==
0x6E
&&
CAN_MSG_Read
(
11
,
3
)
==
0x8C
)
return
enResult
;
}
void
ASC2BCD
(
uint8_t
*
bcd
,
const
uint8_t
*
asc
,
uint8_t
len
);
void
BCD2ASC
(
uint8_t
*
asc
,
const
uint8_t
*
bcd
,
uint8_t
len
);
// int main(void)//测试程序
// {
// uint16_t ascii[8] = {0};
// uint16_t bcd[4] = {0x20,0x25,0x02,0x22};
// BCD2ASC(ascii, bcd, 4);
// for(int i = 0; i < 8; i++)
// {
// printf("ascii = 0x%.2x\n", ascii[i]);
// }
// return 0;
// }
void
ASC2BCD
(
uint8_t
*
bcd
,
const
uint8_t
*
asc
,
uint8_t
len
)
{
uint8_t
c
=
0
;
int
index
=
0
;
len
>>=
1
;
//high BCD
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
zhenduansendStep
++
;
//first BCD
if
(
*
asc
>=
0x30
&&
*
asc
<=
0x39
)
{
index
=
*
asc
-
0x30
;
c
=
index
<<
4
;
}
else
asc
++
;
//low BCD
if
(
*
asc
>=
0x30
&&
*
asc
<=
0x39
)
{
return
;
index
=
*
asc
-
0x30
;
c
|=
index
;
}
break
;
case
17
:
LINE_OUT_NEG_01
=
0
;
LINE_OUT_NEG_02
=
0
;
LINE_OUT_NEG_03
=
0
;
LINE_OUT_NEG_04
=
0
;
asc
++
;
*
bcd
++
=
c
;
}
}
zhenduansendStep
=
0
;
break
;
default:
break
;
void
BCD2ASC
(
uint8_t
*
asc
,
const
uint8_t
*
bcd
,
uint8_t
len
)
{
uint8_t
c
=
0
;
uint8_t
i
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
//first BCD
c
=
*
bcd
>>
4
;
*
asc
++
=
bcd2ascii
[
c
];
//second
c
=
*
bcd
&
0x0f
;
*
asc
++
=
bcd2ascii
[
c
];
bcd
++
;
}
// if(zhenduansendStep != 4)
// {
// u32sendendflag = can_mid(m_msg20);
// }
//return u32sendendflag;
}
#define MASK_01 0x1A2B3C06
#define MASK_11 0x1A2B4D06
void
get_key_value
(
void
)
{
uint8_t
i
=
0
;
...
...
@@ -2017,315 +1959,306 @@ void get_key_value(void)
key_value_all
=
SeedValue
;
}
}
static
void
Ser27_CalculateKeyLV11
(
uint8_t
Seed
[],
uint8_t
Key
[])
{
uint8_t
i
=
0
;
uint32_t
SeedValue
=
0
;
SeedValue
=
(
uint32_t
)
Seed
[
0
];
SeedValue
=
(
SeedValue
<<
8u
)
|
((
uint32_t
)
Seed
[
1
]);
SeedValue
=
(
SeedValue
<<
8u
)
|
((
uint32_t
)
Seed
[
2
]);
SeedValue
=
(
SeedValue
<<
8u
)
|
((
uint32_t
)
Seed
[
3
]);
if
(
SeedValue
!=
0
)
{
for
(
i
=
0
;
i
<
47
;
i
++
)
{
if
(
SeedValue
&
0x80000000
)
{
SeedValue
=
SeedValue
<<
1
;
SeedValue
=
SeedValue
^
MASK_11
;
}
else
if
(
SeedValue
&
0x40000000
)
{
SeedValue
=
SeedValue
<<
2
;
SeedValue
=
SeedValue
^
MASK_11
;
}
else
if
(
SeedValue
&
0x20000000
)
{
SeedValue
=
SeedValue
<<
3
;
SeedValue
=
SeedValue
^
MASK_11
;
}
else
if
(
SeedValue
&
0x10000000
)
{
SeedValue
=
SeedValue
<<
4
;
SeedValue
=
SeedValue
^
MASK_11
;
}
else
{
SeedValue
=
~
SeedValue
;
}
}
SeedValue
=
(
uint32_t
)(((
SeedValue
<<
3
)
^
(
MASK_11
>>
2
))
^
((
SeedValue
>>
2
)
^
(
MASK_11
<<
3
)));
Key
[
0
]
=
(
uint8_t
)(
SeedValue
>>
24
);
Key
[
1
]
=
(
uint8_t
)(
SeedValue
>>
16
);
Key
[
2
]
=
(
uint8_t
)(
SeedValue
>>
8
);
Key
[
3
]
=
(
uint8_t
)
SeedValue
;
}
}
uint8_t
u8get714msg
[
8
];
uint8_t
PNtestresult
=
0
;
uint8_t
lingjianhao
[
21
];
uint8_t
PNresult
=
0
;
void
Get_PN_msg
(
void
)
{
if
(
PNtestresult
==
1
)
{
return
;
}
u8get714msg
[
0
]
=
Get_CAN_CH0_ID_794_byte0_Sig
();
u8get714msg
[
1
]
=
Get_CAN_CH0_ID_794_byte1_Sig
();
u8get714msg
[
2
]
=
Get_CAN_CH0_ID_794_byte2_Sig
();
u8get714msg
[
3
]
=
Get_CAN_CH0_ID_794_byte3_Sig
();
u8get714msg
[
4
]
=
Get_CAN_CH0_ID_794_byte4_Sig
();
u8get714msg
[
5
]
=
Get_CAN_CH0_ID_794_byte5_Sig
();
u8get714msg
[
6
]
=
Get_CAN_CH0_ID_794_byte6_Sig
();
u8get714msg
[
7
]
=
Get_CAN_CH0_ID_794_byte7_Sig
();
if
(
u8get714msg
[
0
]
==
0x10
&&
u8get714msg
[
4
]
==
0x87
&&
PNresult
==
0
)
{
memset
(
lingjianhao
,
0xFF
,
sizeof
(
lingjianhao
));
// memcpy(&lingjianhao[0],&u8get714msg[5],3);
lingjianhao
[
0
]
=
u8get714msg
[
5
];
lingjianhao
[
1
]
=
u8get714msg
[
6
];
lingjianhao
[
2
]
=
u8get714msg
[
7
];
PNresult
=
1
;
}
else
if
(
u8get714msg
[
0
]
==
0x21
&&
PNresult
==
1
)
{
// memcpy(&lingjianhao[3],&u8get714msg[1],7);
lingjianhao
[
3
]
=
u8get714msg
[
1
];
lingjianhao
[
4
]
=
u8get714msg
[
2
];
lingjianhao
[
5
]
=
u8get714msg
[
3
];
lingjianhao
[
6
]
=
u8get714msg
[
4
];
lingjianhao
[
7
]
=
u8get714msg
[
5
];
lingjianhao
[
8
]
=
u8get714msg
[
6
];
lingjianhao
[
9
]
=
u8get714msg
[
7
];
PNresult
=
2
;
}
else
if
(
u8get714msg
[
0
]
==
0x22
&&
PNresult
==
2
)
{
// memcpy(&lingjianhao[10],&u8get714msg[1],7);
lingjianhao
[
10
]
=
u8get714msg
[
1
];
lingjianhao
[
11
]
=
u8get714msg
[
2
];
lingjianhao
[
12
]
=
u8get714msg
[
3
];
lingjianhao
[
13
]
=
u8get714msg
[
4
];
lingjianhao
[
14
]
=
u8get714msg
[
5
];
lingjianhao
[
15
]
=
u8get714msg
[
6
];
// lingjianhao[16] = u8get714msg[7];
PNresult
=
3
;
}
else
if
(
u8get714msg
[
0
]
==
0x23
&&
PNresult
==
3
)
{
// lingjianhao[21] = 0xFF;
// memcpy(&lingjianhao[17],&u8get714msg[1],7);
General_Number_Disp
(
lingjianhao
,
15
,
100
);
PNtestresult
=
1
;
}
}
void
Send_BT_MAC
(
void
)
{
uint8_t
BT_Mac
[
8
]
=
{
0
}
;
CAN_Frame_st_t
CanBTMsg
;
BT_Mac
[
0
]
=
CANOpenBle
[
7
];
BT_Mac
[
1
]
=
CANOpenBle
[
6
];
BT_Mac
[
2
]
=
CANOpenBle
[
5
];
BT_Mac
[
3
]
=
CANOpenBle
[
4
];
BT_Mac
[
4
]
=
CANOpenBle
[
3
];
BT_Mac
[
5
]
=
CANOpenBle
[
2
];
BT_Mac
[
6
]
=
0x00
;
BT_Mac
[
7
]
=
0x00
;
init_CAN_Frame
(
&
CanBTMsg
,
BLE_ID_TX
,
8
,
1
,
BT_Mac
);
can_mid
(
CanBTMsg
);
}
void
Get_Ble_Address
(
void
)
{
uint8_t
Ble_Request
[
8
]
=
{
0
};
CAN_Frame_st_t
CanBleMsg
;
Ble_Request
[
0
]
=
0x0A
;
Ble_Request
[
1
]
=
0x05
;
Ble_Request
[
2
]
=
0x05
;
Ble_Request
[
3
]
=
0x0A
;
Ble_Request
[
4
]
=
0x07
;
Ble_Request
[
5
]
=
0x08
;
Ble_Request
[
6
]
=
0x08
;
Ble_Request
[
7
]
=
0x07
;
init_CAN_Frame
(
&
CanBleMsg
,
BT_ID_TX
,
8
,
1
,
Ble_Request
);
can_mid
(
CanBleMsg
);
}
void
LY_Connect
(
void
)
{
uint8_t
LY_Connect
[
8
]
=
{
0
};
CAN_Frame_st_t
LYConnectMsg
;
init_CAN_Frame
(
&
LYConnectMsg
,
LY_CON_ID
,
8
,
1
,
LY_Connect
);
can_mid
(
LYConnectMsg
);
}
void
OPE_BLE_Address
(
void
)
{
CANOpenBle
[
0
]
=
0x56
;
CANOpenBle
[
1
]
=
0x44
;
CANOpenBle
[
2
]
=
0x0A
;
CANOpenBle
[
3
]
=
0x8A
;
CANOpenBle
[
4
]
=
0x0A
;
CANOpenBle
[
5
]
=
0x0A
;
CANOpenBle
[
6
]
=
name1
;
CANOpenBle
[
7
]
=
name2
;
CANOpenBle
[
8
]
=
0x01
;
CANOpenBle
[
9
]
=
Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte0_Sig
();
CANOpenBle
[
10
]
=
Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte1_Sig
();
CANOpenBle
[
11
]
=
Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte2_Sig
();
CANOpenBle
[
12
]
=
Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte3_Sig
();
CANOpenBle
[
13
]
=
Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte4_Sig
();
CANOpenBle
[
14
]
=
Get_CAN_CH0_ID_0X7F4254FF_BT_MAC_byte5_Sig
();
CANOpenBle
[
15
]
=
0x4B
;
CANOpenBle
[
16
]
=
0x4A
;
BCD2ASC
(
blename
,
&
name1
,
2
);
BCD2ASC
(
blename
+
2
,
&
name2
,
2
);
blename
[
4
]
=
0xff
;
}
void
Can_Send_0x714_CHECK
(
void
)
{
// if (Get_CAN_CH0_ID_794_byte0_Sig() == 0x21)
// {
// get_num_buf[3] = Get_CAN_CH0_ID_794_byte1_Sig();
// get_num_buf[4] = Get_CAN_CH0_ID_794_byte2_Sig();
// get_num_buf[5] =Get_CAN_CH0_ID_794_byte3_Sig();
// get_num_buf[6] = Get_CAN_CH0_ID_794_byte4_Sig();
// get_num_buf[7] = Get_CAN_CH0_ID_794_byte5_Sig();
// get_num_buf[8] =Get_CAN_CH0_ID_794_byte6_Sig();
// get_num_buf[9] = Get_CAN_CH0_ID_794_byte7_Sig();
// // zhenduansendStep++;
// }
switch
(
zhenduansendStep
)
{
case
0
:
// if(barcode_Msg1[0] != 51 && barcode_Msg1[1] != 55)
// {
// zhenduansendStep = 0;
// break;
// }
data20
[
0
]
=
0x03
;
data20
[
1
]
=
0x22
;
data20
[
2
]
=
0xF1
;
data20
[
3
]
=
0x87
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
//诊断
can_mid
(
m_msg20
);
// Gen_TimeDelay(10000, 50);
zhenduansendStep
++
;
break
;
case
1
:
Get_PN_msg
();
data20
[
0
]
=
0x30
;
data20
[
1
]
=
0x00
;
data20
[
2
]
=
0x00
;
data20
[
3
]
=
0xAA
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
// 诊断
can_mid
(
m_msg20
);
zhenduansendStep
++
;
Get_PN_msg
();
break
;
case
2
:
Get_PN_msg
();
//Gen_TimeDelay(10000, 50);
zhenduansendStep
++
;
break
;
case
3
:
// uint8_t asd = 0;
// uint8_t bzy = 0;
// asd = CAN_MSG_Read(11,0);
// bzy = CAN_MSG_Read(11,1);
test
[
3
]
=
CAN_MSG_Read
(
11
,
1
);
test
[
4
]
=
CAN_MSG_Read
(
11
,
2
);
test
[
5
]
=
CAN_MSG_Read
(
11
,
3
);
test
[
6
]
=
CAN_MSG_Read
(
11
,
4
);
test
[
7
]
=
CAN_MSG_Read
(
11
,
5
);
test
[
8
]
=
CAN_MSG_Read
(
11
,
6
);
test
[
9
]
=
CAN_MSG_Read
(
11
,
7
);
if
(
CAN_MSG_Read
(
11
,
0
)
==
0x21
)
{
get_num_buf
[
3
]
=
CAN_MSG_Read
(
11
,
1
);
get_num_buf
[
4
]
=
CAN_MSG_Read
(
11
,
2
);
get_num_buf
[
5
]
=
CAN_MSG_Read
(
11
,
3
);
get_num_buf
[
6
]
=
CAN_MSG_Read
(
11
,
4
);
get_num_buf
[
7
]
=
CAN_MSG_Read
(
11
,
5
);
get_num_buf
[
8
]
=
CAN_MSG_Read
(
11
,
6
);
get_num_buf
[
9
]
=
CAN_MSG_Read
(
11
,
7
);
zhenduansendStep
++
;
}
// else
// {
// return;
// }
break
;
case
4
:
// if(CAN_MSG_Read(11,0) == 0x22)
// {
if
(
CAN_MSG_Read
(
11
,
0
)
==
0x22
)
}
uint8_t
GlobalDial
=
1u
;
uint8_t
LockSts
=
0u
;
uint8_t
FYReadState
=
FYReadState_Idel
;
uint8_t
FYWriteState
=
FYWriteState_Idel
;
void
UDS_ReadDIDRequest
(
uint16_t
did
)
{
uint8_t
read_buf
[
8
]
=
{
0xaa
};
read_buf
[
0
]
=
0x22
;
read_buf
[
1
]
=
(
did
>>
8
)
&
0xff
;
read_buf
[
2
]
=
did
&
0xff
;
UDS_S_Data_Request
(
DIAG_ID_Tx
,
read_buf
,
3u
);
}
void
UDS_FiveYardsRead
(
void
)
{
if
(
FYReadState
>=
FYReadState_Idel
)
{
get_num_buf
[
10
]
=
CAN_MSG_Read
(
11
,
1
);
get_num_buf
[
11
]
=
CAN_MSG_Read
(
11
,
2
);
get_num_buf
[
12
]
=
CAN_MSG_Read
(
11
,
3
);
get_num_buf
[
13
]
=
CAN_MSG_Read
(
11
,
4
);
get_num_buf
[
14
]
=
CAN_MSG_Read
(
11
,
5
);
get_num_buf
[
15
]
=
CAN_MSG_Read
(
11
,
6
);
get_num_buf
[
16
]
=
CAN_MSG_Read
(
11
,
7
);
zhenduansendStep
++
;
return
;
}
// }
// else
// {
// return;
// }
switch
(
FYReadState
)
{
case
FYReadState_ReqF187
:
{
UDS_ReadDIDRequest
(
0xF187
);
break
;
case
5
:
data20
[
0
]
=
0x03
;
data20
[
1
]
=
0x22
;
data20
[
2
]
=
0xF1
;
data20
[
3
]
=
0x8A
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
//诊断
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
}
case
FYReadState_ReqF18A
:
{
UDS_ReadDIDRequest
(
0xF18A
);
break
;
case
6
:
get_num_buf
[
17
]
=
CAN_MSG_Read
(
11
,
5
);
get_num_buf
[
18
]
=
CAN_MSG_Read
(
11
,
6
);
get_num_buf
[
19
]
=
CAN_MSG_Read
(
11
,
7
);
zhenduansendStep
++
;
}
case
FYReadState_ReqF18B
:
{
UDS_ReadDIDRequest
(
0xF18b
);
break
;
case
7
:
data20
[
0
]
=
0x30
;
data20
[
1
]
=
0x00
;
data20
[
2
]
=
0x00
;
data20
[
3
]
=
0xAA
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
//诊断
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
}
case
FYReadState_ReqF18C
:
{
UDS_ReadDIDRequest
(
0xF18C
);
break
;
case
8
:
if
(
CAN_MSG_Read
(
11
,
0
)
==
0x21
)
}
case
FYReadState_ReadALL
:
{
get_num_buf
[
20
]
=
CAN_MSG_Read
(
11
,
1
);
get_num_buf
[
21
]
=
CAN_MSG_Read
(
11
,
2
);
get_num_buf
[
22
]
=
CAN_MSG_Read
(
11
,
3
);
get_num_buf
[
23
]
=
CAN_MSG_Read
(
11
,
4
);
get_num_buf
[
25
]
=
CAN_MSG_Read
(
11
,
5
);
get_num_buf
[
26
]
=
CAN_MSG_Read
(
11
,
6
);
get_num_buf
[
27
]
=
CAN_MSG_Read
(
11
,
7
);
zhenduansendStep
++
;
// General_Number_Disp(lingjianhao, 15, 100);
comparestart
=
1u
;
flashtime
=
0u
;
zhenduanflag
=
3
;
break
;
}
else
}
FYReadState
=
FYReadState_Idel
;
}
// key_array
void
UDS_FiveYardsWrite
(
void
)
{
uint8_t
write_buf
[
64
]
=
0xaa
;
uint8_t
bcd_buf
[
10
]
=
{
0
};
write_buf
[
0
]
=
0x2e
;
if
(
FYWriteState
>=
FYWriteState_Idel
)
{
return
;
}
break
;
case
9
:
data20
[
0
]
=
0x03
;
data20
[
1
]
=
0x22
;
data20
[
2
]
=
0xF1
;
data20
[
3
]
=
0x99
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
//诊断
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
break
;
case
10
:
if
(
CAN_MSG_Read
(
11
,
0
)
==
0x07
&&
CAN_MSG_Read
(
11
,
1
)
==
0x62
)
switch
(
FYWriteState
)
{
get_num_buf
[
28
]
=
CAN_MSG_Read
(
11
,
4
);
get_num_buf
[
29
]
=
CAN_MSG_Read
(
11
,
5
);
get_num_buf
[
30
]
=
CAN_MSG_Read
(
11
,
6
);
get_num_buf
[
31
]
=
CAN_MSG_Read
(
11
,
7
);
zhenduansendStep
++
;
}
else
case
FYWriteState_Req1003
:
{
return
;
write_buf
[
0
]
=
0x10
;
write_buf
[
1
]
=
0x03
;
UDS_S_Data_Request
(
DIAG_ID_Tx
,
write_buf
,
2u
);
break
;
}
case
FYWriteState_Req1002
:
{
write_buf
[
0
]
=
0x10
;
write_buf
[
1
]
=
0x02
;
UDS_S_Data_Request
(
DIAG_ID_Tx
,
write_buf
,
2u
);
break
;
case
11
:
data20
[
0
]
=
0x03
;
data20
[
1
]
=
0x22
;
data20
[
2
]
=
0xF1
;
data20
[
3
]
=
0x8C
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
//诊断
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
}
case
FYWriteState_Req2701
:
{
write_buf
[
0
]
=
0x27
;
write_buf
[
1
]
=
0x07
;
UDS_S_Data_Request
(
DIAG_ID_Tx
,
write_buf
,
2u
);
break
;
case
12
:
get_num_buf
[
17
]
=
CAN_MSG_Read
(
11
,
5
);
get_num_buf
[
18
]
=
CAN_MSG_Read
(
11
,
6
);
get_num_buf
[
19
]
=
CAN_MSG_Read
(
11
,
7
);
zhenduansendStep
++
;
case
13
:
data20
[
0
]
=
0x30
;
data20
[
1
]
=
0x00
;
data20
[
2
]
=
0x00
;
data20
[
3
]
=
0xAA
;
data20
[
4
]
=
0xAA
;
data20
[
5
]
=
0xAA
;
data20
[
6
]
=
0xAA
;
data20
[
7
]
=
0xAA
;
init_CAN_Frame
(
&
m_msg20
,
0x714
,
8
,
0
,
data20
);
//诊断
can_mid
(
m_msg20
);
Gen_TimeDelay
(
10000
,
50
);
zhenduansendStep
++
;
}
case
FYWriteState_Req2702
:
{
// get_key_value();
Ser27_CalculateKeyLV11
(
seed_value
,
key_array
);
write_buf
[
0
]
=
0x27
;
write_buf
[
1
]
=
0x08
;
write_buf
[
2
]
=
key_array
[
0
];
write_buf
[
3
]
=
key_array
[
1
];
write_buf
[
4
]
=
key_array
[
2
];
write_buf
[
5
]
=
key_array
[
3
];
UDS_S_Data_Request
(
DIAG_ID_Tx
,
write_buf
,
6u
);
break
;
case
14
:
if
(
CAN_MSG_Read
(
11
,
0
)
==
0x21
)
}
case
FYWriteState_ReqF187
:
{
get_num_buf
[
20
]
=
CAN_MSG_Read
(
11
,
1
);
get_num_buf
[
21
]
=
CAN_MSG_Read
(
11
,
2
);
get_num_buf
[
22
]
=
CAN_MSG_Read
(
11
,
3
);
get_num_buf
[
23
]
=
CAN_MSG_Read
(
11
,
4
);
get_num_buf
[
25
]
=
CAN_MSG_Read
(
11
,
5
);
get_num_buf
[
26
]
=
CAN_MSG_Read
(
11
,
6
);
get_num_buf
[
27
]
=
CAN_MSG_Read
(
11
,
7
);
zhenduansendStep
++
;
write_buf
[
1
]
=
0xf1
;
write_buf
[
2
]
=
0x87
;
memcpy
(
&
write_buf
[
3
],
&
barcode_Msg
[
0
],
UDS_F187_LEN
);
UDS_S_Data_Request
(
DIAG_ID_Tx
,
write_buf
,
3u
+
UDS_F187_LEN
);
break
;
}
else
case
FYWriteState_ReqF18A
:
{
return
;
write_buf
[
1
]
=
0xf1
;
write_buf
[
2
]
=
0x8A
;
memcpy
(
&
write_buf
[
3
],
&
barcode_Msg
[
UDS_F187_LEN
],
UDS_F18A_LEN
);
UDS_S_Data_Request
(
DIAG_ID_Tx
,
write_buf
,
3u
+
UDS_F18A_LEN
);
break
;
}
case
FYWriteState_ReqF18B
:
{
write_buf
[
1
]
=
0xf1
;
write_buf
[
2
]
=
0x8b
;
// ASC2BCD( bcd_buf, &barcode_Msg[UDS_F187_LEN + UDS_F18A_LEN], 8);
// write_buf[3] = bcd_buf[3];
// write_buf[4] = bcd_buf[2];
// write_buf[5] = bcd_buf[1];
// write_buf[6] = bcd_buf[0];
memcpy
(
&
write_buf
[
3
],
&
barcode_Msg
[
UDS_F187_LEN
+
UDS_F18A_LEN
],
UDS_F18B_LEN
);
// uint8_t err = isDateCorrect(&write_buf[3]);
UDS_S_Data_Request
(
DIAG_ID_Tx
,
write_buf
,
3u
+
UDS_F18B_LEN
);
break
;
case
15
:
// LINE_OUT_NEG_01 = 0;
// LINE_OUT_NEG_02 = 0;
// LINE_OUT_NEG_03 = 0;
// LINE_OUT_NEG_04 = 0;
}
case
FYWriteState_ReqF18C
:
{
zhenduansendStep
=
0
;
write_buf
[
1
]
=
0xf1
;
write_buf
[
2
]
=
0x8C
;
memcpy
(
&
write_buf
[
3
],
&
barcode_Msg
[
UDS_F187_LEN
+
UDS_F18A_LEN
+
UDS_F18B_LEN
],
UDS_F18C_LEN
);
UDS_S_Data_Request
(
DIAG_ID_Tx
,
write_buf
,
3u
+
UDS_F18C_LEN
);
// comparestart = 1;
// zhenduanflag = 3;
break
;
}
case
FYWriteState_WriteALL
:
{
// General_Number_Disp(lingjianhao, 15, 100);
LINE_OUT_NEG_01
=
0
;
LINE_OUT_NEG_02
=
0
;
LINE_OUT_NEG_03
=
0
;
LINE_OUT_NEG_04
=
0
;
break
;
}
}
}
FYWriteState
=
FYWriteState_Idel
;
}
...
...
YueJin_test_bench/source/Appliciation/Task.h
View file @
0b9ea76e
...
...
@@ -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
YueJin_test_bench/source/Appliciation/UDS_ISO14229_Client.c
View file @
0b9ea76e
...
...
@@ -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
]
==
0x3
)
{
Global_Session
=
3
;
if
(
loc_Step
==
1
)
if
(
UDS_ISO14229_Transfer
[
0
]
==
0x2
)
{
loc_Step
=
2
;
FYWriteState
=
FYWriteState_Req2701
;
}
if
(
UDS_ISO14229_Transfer
[
0
]
==
0x3
)
{
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
);
break
;
case
CODE_DID
:
//供应商代码
memcpy
(
SUPPLIER
,
&
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
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
[])
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment