Commit 89324ceb authored by 张明扬's avatar 张明扬 🇨🇳

feat:项目需求,将UUID写入的长度修改位21字节,增加写入长度的判断

parent ab10570e
...@@ -194,7 +194,7 @@ void Data_Read_DiagPara(void) ...@@ -194,7 +194,7 @@ void Data_Read_DiagPara(void)
{ {
uint8_t i; uint8_t i;
Ser2EDFlashData* ReadSer2EDataForDFlash = (Ser2EDFlashData*)0x500600ul; Ser2EDFlashData* ReadSer2EDataForDFlash = (Ser2EDFlashData*)0x500600ul;
for ( i = 0; i < 32; i++) for ( i = 0; i < 21; i++)
{ {
Ser2EDataForDFlash.DID_F184[i] = ReadSer2EDataForDFlash->DID_F184[i]; Ser2EDataForDFlash.DID_F184[i] = ReadSer2EDataForDFlash->DID_F184[i];
} }
...@@ -857,11 +857,11 @@ void UDS_Service_22_Indication(uint16_t A_TA_type, uint16_t A_Length, uint8_t *A ...@@ -857,11 +857,11 @@ void UDS_Service_22_Indication(uint16_t A_TA_type, uint16_t A_Length, uint8_t *A
break; break;
case 0xF184: // UUID case 0xF184: // UUID
for (i = 0; i < 32; i++) for (i = 0; i < 21; i++)
{ {
UDS_ISO14229_Transfer[i + 2] = Ser2EDataForDFlash.DID_F184[i]; UDS_ISO14229_Transfer[i + 2] = Ser2EDataForDFlash.DID_F184[i];
} }
UDS_Service_Response(0x22, POSITIVE_RSP, DIAG_ID_Tx, 2 + 32, UDS_ISO14229_Transfer); UDS_Service_Response(0x22, POSITIVE_RSP, DIAG_ID_Tx, 2 + 21, UDS_ISO14229_Transfer);
break; break;
case 0x2024: // ESP32内部版本号 case 0x2024: // ESP32内部版本号
...@@ -915,32 +915,39 @@ void UDS_Service_2E_Indication ( uint16_t A_TA_type, uint16_t A_Length, uint8_t ...@@ -915,32 +915,39 @@ void UDS_Service_2E_Indication ( uint16_t A_TA_type, uint16_t A_Length, uint8_t
UDS_ISO14229_Transfer[i] = *(A_Data + i); UDS_ISO14229_Transfer[i] = *(A_Data + i);
} }
if ( FunorPhy == 0X7DF ) if ( FunorPhy == 0X7DF )
{
return; return;
if ( DiagLockFlag == 0x00 ) }
if( (SessionType == DefaultSession) || (SessionType == ProgrammingSession))
{ {
NegRes.code = securityAccessDenied; //NRC33 NegRes.code = serviceNotSupportedInActiveSession; //NRC7F
UDS_Service_Response ( 0x2E, NEGATIVE_RSP, DIAG_ID_Tx, 1, ( uint8_t * ) ( &NegRes.code ) ); UDS_Service_Response ( 0x2E, NEGATIVE_RSP, DIAG_ID_Tx, 1, ( uint8_t * ) ( &NegRes.code ) );
return; return;
} }
if ( Service2EDiagDataLength < 3 ) if ( Service2EDiagDataLength < 3 )
{ {
NegRes.code = incorrectMessageLength; //NRC13 NegRes.code = incorrectMessageLength; //NRC13
UDS_Service_Response ( 0x2E, NEGATIVE_RSP, DIAG_ID_Tx, 1, ( uint8_t * ) ( &NegRes.code ) ); UDS_Service_Response ( 0x2E, NEGATIVE_RSP, DIAG_ID_Tx, 1, ( uint8_t * ) ( &NegRes.code ) );
return; return;
} }
if( (SessionType == DefaultSession) || (SessionType == ProgrammingSession))
if ( DiagLockFlag == 0x00 )
{ {
NegRes.code = serviceNotSupportedInActiveSession; //NRC7F NegRes.code = securityAccessDenied; //NRC33
UDS_Service_Response ( 0x2E, NEGATIVE_RSP, DIAG_ID_Tx, 1, ( uint8_t * ) ( &NegRes.code ) ); UDS_Service_Response ( 0x2E, NEGATIVE_RSP, DIAG_ID_Tx, 1, ( uint8_t * ) ( &NegRes.code ) );
return; return;
} }
DID = ((uint16_t)UDS_ISO14229_Transfer[0] << 8) | ((uint16_t)UDS_ISO14229_Transfer[1]); DID = ((uint16_t)UDS_ISO14229_Transfer[0] << 8) | ((uint16_t)UDS_ISO14229_Transfer[1]);
switch ( DID ) switch ( DID )
{ {
case 0xF184: // 读指纹数据标识符 case 0xF184: // 写入UUID
for (i = 0; i < 33; i++) if ( Service2EDiagDataLength == 23 ) //限制最大长度
{
for (i = 0; i < 21; i++)
{ {
Data[i] = UDS_ISO14229_Transfer[i+2]; Data[i] = UDS_ISO14229_Transfer[i + 2];
} }
for (i = 0; i < (sizeof(Ser2EDataForDFlash.DID_F184)); i++) for (i = 0; i < (sizeof(Ser2EDataForDFlash.DID_F184)); i++)
...@@ -949,11 +956,17 @@ void UDS_Service_2E_Indication ( uint16_t A_TA_type, uint16_t A_Length, uint8_t ...@@ -949,11 +956,17 @@ void UDS_Service_2E_Indication ( uint16_t A_TA_type, uint16_t A_Length, uint8_t
} }
Ser2EDataForDFlash.Flag = 0x5AA5A77Au; Ser2EDataForDFlash.Flag = 0x5AA5A77Au;
// memcpy(Ser2EDataForDFlash.DID_F184, Data, sizeof(Ser2EDataForDFlash.DID_F184)); // memcpy(Ser2EDataForDFlash.DID_F184, Data, sizeof(Ser2EDataForDFlash.DID_F184));
//擦除扇区 // 擦除扇区
EraseSector (0x500600ul); EraseSector(0x500600ul);
//App程序状态和22服务数据全写进去 // App程序状态和22服务数据全写进去
ProgramPage (0x500600ul, sizeof(Ser2EDataForDFlash), (uint8_t *)(&Ser2EDataForDFlash)); ProgramPage(0x500600ul, sizeof(Ser2EDataForDFlash), (uint8_t *)(&Ser2EDataForDFlash));
UDS_Service_Response(0x2E, POSITIVE_RSP, DIAG_ID_Tx, 2, UDS_ISO14229_Transfer); UDS_Service_Response(0x2E, POSITIVE_RSP, DIAG_ID_Tx, 2, UDS_ISO14229_Transfer);
}
else
{
NegRes.code = incorrectMessageLength; //NRC13
UDS_Service_Response ( 0x2E, NEGATIVE_RSP, DIAG_ID_Tx, 1, ( uint8_t * ) ( &NegRes.code ) );
}
break; break;
default: default:
if ( FunorPhy == 0x7df ) if ( FunorPhy == 0x7df )
......
...@@ -354,7 +354,8 @@ extern DiagDFlashData DiagDataForDFlash; ...@@ -354,7 +354,8 @@ extern DiagDFlashData DiagDataForDFlash;
typedef struct typedef struct
{ {
uint32_t Flag; uint32_t Flag;
uint8_t DID_F184[32]; uint8_t DID_F184[21];
uint8_t Filldata[11];
} Ser2EDFlashData; } Ser2EDFlashData;
extern Ser2EDFlashData Ser2EDataForDFlash; extern Ser2EDFlashData Ser2EDataForDFlash;
......
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