Sanity-Check for ConfigValues
This commit is contained in:
		
							
								
								
									
										4
									
								
								Software/data_src/static/tt_dtc/dtc_13.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Software/data_src/static/tt_dtc/dtc_13.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | { | ||||||
|  |     "title": "Config-Validierung", | ||||||
|  |     "description": "Ein oder mehrer Einstellungswerte waren ausserhalb gültiger Werte. Diese wurden automatisch korrigiert. Prüfen Sie Ihre Einstellungen" | ||||||
|  | } | ||||||
| @@ -88,6 +88,12 @@ void GetConfig_EEPROM() | |||||||
|     MaintainDTC(DTC_EEPROM_CFG_BAD, DTC_CRITICAL, true); |     MaintainDTC(DTC_EEPROM_CFG_BAD, DTC_CRITICAL, true); | ||||||
|   } |   } | ||||||
|   LubeConfig.checksum = checksum; |   LubeConfig.checksum = checksum; | ||||||
|  |  | ||||||
|  |   if (!ConfigSanityCheck(true)) | ||||||
|  |   { | ||||||
|  |     MaintainDTC(DTC_EEPROM_CFG_SANITY, DTC_WARN, true); | ||||||
|  |     globals.requestEEAction = EE_CFG_SAVE; | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| void StorePersistence_EEPROM() | void StorePersistence_EEPROM() | ||||||
| @@ -231,3 +237,111 @@ boolean checkEEPROMavailable() | |||||||
|   MaintainDTC(DTC_NO_EEPROM_FOUND, DTC_CRITICAL, false); |   MaintainDTC(DTC_NO_EEPROM_FOUND, DTC_CRITICAL, false); | ||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | bool ConfigSanityCheck(bool autocorrect) | ||||||
|  | { | ||||||
|  |   bool allvalid = true; | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.DistancePerLube_Default > 0) || !(LubeConfig.DistancePerLube_Default < 50000)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.DistancePerLube_Default = LubeConfig_defaults.DistancePerLube_Default; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.DistancePerLube_Rain > 0) || !(LubeConfig.DistancePerLube_Rain < 50000)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.DistancePerLube_Rain = LubeConfig_defaults.DistancePerLube_Rain; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.tankCapacity_ml > 0) || !(LubeConfig.tankCapacity_ml < 5000)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.tankCapacity_ml = LubeConfig_defaults.tankCapacity_ml; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.amountPerDose_µl > 0) || !(LubeConfig.amountPerDose_µl < 100)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.amountPerDose_µl = LubeConfig_defaults.amountPerDose_µl; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.TankRemindAtPercentage >= 0) || !(LubeConfig.TankRemindAtPercentage <= 100)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.TankRemindAtPercentage = LubeConfig_defaults.TankRemindAtPercentage; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.PulsePerRevolution > 0) || !(LubeConfig.PulsePerRevolution < 1000)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.PulsePerRevolution = LubeConfig_defaults.PulsePerRevolution; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.TireWidth_mm > 0) || !(LubeConfig.TireWidth_mm < 500)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.TireWidth_mm = LubeConfig_defaults.TireWidth_mm; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.TireWidthHeight_Ratio > 0) || !(LubeConfig.TireWidthHeight_Ratio < 150)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.TireWidthHeight_Ratio = LubeConfig_defaults.TireWidthHeight_Ratio; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.RimDiameter_Inch > 0) || !(LubeConfig.RimDiameter_Inch < 30)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.RimDiameter_Inch = LubeConfig_defaults.RimDiameter_Inch; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.DistancePerRevolution_mm > 0) || !(LubeConfig.DistancePerRevolution_mm < 10000)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.DistancePerRevolution_mm = LubeConfig_defaults.DistancePerRevolution_mm; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.BleedingPulses > 0) || !(LubeConfig.BleedingPulses < 1001)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.BleedingPulses = LubeConfig_defaults.BleedingPulses; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (!(LubeConfig.SpeedSource >= 0) || !(LubeConfig.SpeedSource < SpeedSourceString_Elements)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.SpeedSource = LubeConfig_defaults.SpeedSource; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | #ifdef FEATURE_ENABLE_GPS | ||||||
|  |   if (!(LubeConfig.GPSBaudRate >= 0) || !(LubeConfig.GPSBaudRate < GPSBaudRateString_Elements)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.GPSBaudRate = LubeConfig_defaults.GPSBaudRate; | ||||||
|  |   } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifdef FEATURE_ENABLE_CAN | ||||||
|  |   if (!(LubeConfig.CANSource >= 0) || !(LubeConfig.CANSource < CANSourceString_Elements)) | ||||||
|  |   { | ||||||
|  |     allvalid = false; | ||||||
|  |     if (autocorrect) | ||||||
|  |       LubeConfig.CANSource = LubeConfig_defaults.CANSource; | ||||||
|  |   } | ||||||
|  | #endif | ||||||
|  |   return allvalid; | ||||||
|  | } | ||||||
| @@ -116,6 +116,7 @@ void FormatPersistence_EEPROM(); | |||||||
| uint32_t Checksum_EEPROM(uint8_t const *data, size_t len); | uint32_t Checksum_EEPROM(uint8_t const *data, size_t len); | ||||||
| void dumpEEPROM(uint16_t memoryAddress, uint16_t length); | void dumpEEPROM(uint16_t memoryAddress, uint16_t length); | ||||||
| void MovePersistencePage_EEPROM(boolean reset); | void MovePersistencePage_EEPROM(boolean reset); | ||||||
|  | bool ConfigSanityCheck(bool autocorrect = false); | ||||||
|  |  | ||||||
| extern LubeConfig_t LubeConfig; | extern LubeConfig_t LubeConfig; | ||||||
| extern persistenceData_t PersistenceData; | extern persistenceData_t PersistenceData; | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ typedef enum DTCNums_e | |||||||
|   DTC_CAN_TRANSCEIVER_FAILED, |   DTC_CAN_TRANSCEIVER_FAILED, | ||||||
|   DTC_NO_CAN_SIGNAL, |   DTC_NO_CAN_SIGNAL, | ||||||
| #endif | #endif | ||||||
|  |   DTC_EEPROM_CFG_SANITY, | ||||||
|   DTC_LAST_DTC |   DTC_LAST_DTC | ||||||
| } DTCNums_t; | } DTCNums_t; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user