|
@@ -46,6 +46,10 @@ void CanTask(void *pvParameters)
|
|
|
else
|
|
|
{
|
|
|
BcuDecodeFunction(CanRxMsg.id, CanRxMsg.data); // can协议解析
|
|
|
+ if(CanRxMsg.id==0x1C00EDEA)
|
|
|
+ {
|
|
|
+ UDSAnsFunc(CanRxMsg.data);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if (timerCANIdle > 20000)
|
|
@@ -412,9 +416,6 @@ void BcuDecodeFunction(uint32 ID, uint8 *rawData)
|
|
|
TMS_FaultLevel = (UINT8)(((*(UINT8 *)(rawData + 7)) >> 6) & 0x3);
|
|
|
BcuRxFlag[27] = 0x01;
|
|
|
break;
|
|
|
- case 0x1C00EDEA:
|
|
|
- UDSAnsFunc(rawData);
|
|
|
- break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -618,18 +619,18 @@ static void UDSAnsFunc(uint8 *rawData)
|
|
|
{
|
|
|
switch (UdsSubService)
|
|
|
{
|
|
|
- case 0x01:
|
|
|
+ case 0x01://下线检测SN写入,自动存储
|
|
|
{
|
|
|
setbit(deviceSnRecvFlg, Data[3]);
|
|
|
if (Data[3] < 0x04)
|
|
|
{
|
|
|
memcpy(&AppConfigInfo.deviceSn[Data[3] * 4], &Data[4], 4);
|
|
|
- UdsAns(true, UdsService, UdsSubService, 0x00, &Data[3], 1);
|
|
|
+ UdsAns(true, UdsService, UdsSubService, 0x00, &Data[4], 4);
|
|
|
}
|
|
|
else if (Data[3] == 0x04)
|
|
|
{
|
|
|
memcpy(&AppConfigInfo.deviceSn[Data[3] * 4], &Data[4], 1);
|
|
|
- UdsAns(true, UdsService, UdsSubService, 0x00, &Data[3], 1);
|
|
|
+ UdsAns(true, UdsService, UdsSubService, 0x00, &Data[4], 4);
|
|
|
}
|
|
|
if (deviceSnRecvFlg == 0x1F)
|
|
|
{
|
|
@@ -639,6 +640,24 @@ static void UDSAnsFunc(uint8 *rawData)
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
+ case 0x02://出厂检测联网测试
|
|
|
+ {
|
|
|
+ if(Data[4]==0x01)
|
|
|
+ {
|
|
|
+ AppConfigInfo.eolFlg = true;
|
|
|
+ AppConfigInfo.appSaveFlg = false;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ AppConfigInfo.eolFlg = false;
|
|
|
+ AppConfigInfo.appSaveFlg = true;
|
|
|
+ }
|
|
|
+ UdsAns(true, UdsService, UdsSubService, 0x00, &Data[4], 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ default:
|
|
|
+ UdsAns(false, UdsService, UdsSubService, 0x00, NULL, 0);
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
else
|