|
@@ -210,16 +210,6 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
{
|
|
|
MC_RideLog.TRIP_Km = 0;
|
|
|
MC_RideLog.TRIP_Time = 0;
|
|
|
- if(strncmp("CLEAR_ODO", (char*)UserString1, 9) != 0)//利用UserString1作为是否允许清除ODO的标志
|
|
|
- {
|
|
|
- if(MC_RideLog.ODO_Km < 1000) //前100km允许清除
|
|
|
- {
|
|
|
- MC_RideLog.ODO_Km = 0;
|
|
|
- MC_RideLog.ODO_Time = 0;
|
|
|
- }
|
|
|
- strncpy((char*)UserString1, (char*)"CLEAR_ODO", 9);
|
|
|
- IsFlashSaveDataUpdate = TRUE;
|
|
|
- }
|
|
|
SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RIDE_LOG, sizeof(MC_RideLog_Struct_t), (uint8_t*)&MC_RideLog.ODO_Km);
|
|
|
SendData(ID_MC_TO_PBU, MODE_REPORT, 0x5303, (uint8_t*)"ACK");
|
|
|
MC_RunInfo.Ride_Km = 0;
|
|
@@ -272,6 +262,45 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
SendData(ID_MC_BC, MODE_REPORT, 0x1720, (uint8_t*)Firmware_Special);
|
|
|
break;
|
|
|
}
|
|
|
+ case 0x3A05://OBC清除ODO信息(定制功能),50km内允许清除5次
|
|
|
+ {
|
|
|
+ if(strncmp("CLEAR", (char*)Data, DataLength) == 0)
|
|
|
+ {
|
|
|
+ if(MC_RideLog.ODO_Km < 500) //前50km内允许清除
|
|
|
+ {
|
|
|
+ //利用UserString1作为是否允许清除ODO的标志,前9个字符为标志,第11个字符为清除的次数
|
|
|
+ if(strncmp("CLEAR_ODO", (char*)UserString1, 9) != 0)//未清除过ODO
|
|
|
+ {
|
|
|
+ MC_RideLog.TRIP_Km = 0;
|
|
|
+ MC_RideLog.TRIP_Time = 0;
|
|
|
+ MC_RideLog.ODO_Km = 0;
|
|
|
+ MC_RideLog.ODO_Time = 0;
|
|
|
+ strncpy((char*)UserString1, (char*)"CLEAR_ODO_1", 11);
|
|
|
+ IsFlashSaveDataUpdate = TRUE;
|
|
|
+ SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RIDE_LOG, sizeof(MC_RideLog_Struct_t), (uint8_t*)&MC_RideLog.ODO_Km);
|
|
|
+ MC_RunInfo.Ride_Km = 0;
|
|
|
+ MC_RunInfo.Ride_Time = 0;
|
|
|
+ }
|
|
|
+ else//清除过,判断次数
|
|
|
+ {
|
|
|
+ if(UserString1[10] < '5')//小于5执行
|
|
|
+ {
|
|
|
+ MC_RideLog.TRIP_Km = 0;
|
|
|
+ MC_RideLog.TRIP_Time = 0;
|
|
|
+ MC_RideLog.ODO_Km = 0;
|
|
|
+ MC_RideLog.ODO_Time = 0;
|
|
|
+ UserString1[10] += 1;
|
|
|
+ IsFlashSaveDataUpdate = TRUE;
|
|
|
+ SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RIDE_LOG, sizeof(MC_RideLog_Struct_t), (uint8_t*)&MC_RideLog.ODO_Km);
|
|
|
+ MC_RunInfo.Ride_Km = 0;
|
|
|
+ MC_RunInfo.Ride_Time = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SendData(ID_MC_TO_PBU, MODE_REPORT, 0x5303, (uint8_t*)"ACK");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
default:break;
|
|
|
}
|
|
@@ -346,16 +375,6 @@ void DataProcess(uint16_t ID, uint8_t Mode, uint16_t Cmd, uint8_t* Data)
|
|
|
{
|
|
|
MC_RideLog.TRIP_Km = 0;
|
|
|
MC_RideLog.TRIP_Time = 0;
|
|
|
- if(strncmp("CLEAR_ODO", (char*)UserString1, 9) != 0)//利用UserString1作为是否允许清除ODO的标志
|
|
|
- {
|
|
|
- if(MC_RideLog.ODO_Km < 1000) //前100km允许清除
|
|
|
- {
|
|
|
- MC_RideLog.ODO_Km = 0;
|
|
|
- MC_RideLog.ODO_Time = 0;
|
|
|
- }
|
|
|
- strncpy((char*)UserString1, (char*)"CLEAR_ODO", 9);
|
|
|
- IsFlashSaveDataUpdate = TRUE;
|
|
|
- }
|
|
|
SaveParamToEEprom_24C02(&I2C_Handle_EEPROM, EEPROM_24C02_ADDR_RIDE_LOG, sizeof(MC_RideLog_Struct_t), (uint8_t*)&MC_RideLog.ODO_Km);
|
|
|
SendData(ID_MC_TO_HMI, MODE_REPORT, 0x7403, (uint8_t*)"ACK");
|
|
|
MC_RunInfo.Ride_Km = 0;
|