Commit c9450b7b authored by 李俭双's avatar 李俭双

Merge branch 'dev' of http://tyw-server.synology.me:12345/ty/tianying_ty100 into lijianshuang

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