#ifndef _CONFIG_H_ #define _CONFIG_H_ #include #include typedef enum SpeedSource_e { SOURCE_TIME, SOURCE_IMPULSE, SOURCE_GPS, SOURCE_CAN } SpeedSource_t; typedef enum GPSBaudRate_e { BAUD_9600, BAUD_115200 } GPSBaudRate_t; const char GPSBaudRateString[][7] = { "9600", "115200"}; const size_t GPSBaudRateString_Elements = sizeof(GPSBaudRateString) / sizeof(GPSBaudRateString[0]); typedef enum CANSource_e { KTM_890_ADV_R_2021 } CANSource_t; const char CANSourceString[][28] = { "KTM 890 Adventure R (2021)"}; const char CANSourceString_Elements = sizeof(CANSourceString) / sizeof(CANSourceString[0]); const char SpeedSourceString[][8] = { "Timer", "Impuls", "GPS", "CAN-Bus"}; const size_t SpeedSourceString_Elements = sizeof(SpeedSourceString) / sizeof(SpeedSourceString[0]); typedef struct { uint16_t writeCycleCounter = 0; uint32_t tankRemain_µl = 0; uint32_t distanceTraveled_m = 0; uint32_t checksum = 0; } persistenceData_t; typedef struct { uint32_t DistancePerLube_Default = 0; uint32_t DistancePerLube_Rain = 0; uint32_t tankCapacity_ml = 320; uint32_t amountPerDose_µl = 0; uint8_t TankRemindAtPercentage = 30; uint8_t PulsePerRevolution = 1; uint32_t TireWidth_mm = 150; uint32_t TireWidthHeight_Ratio = 70; uint32_t RimDiameter_Inch = 18; uint32_t DistancePerRevolution_mm = 2000; uint8_t BleedingPulses = 25; SpeedSource_t SpeedSource = SOURCE_IMPULSE; GPSBaudRate_t GPSBaudRate = BAUD_9600; CANSource_t CANSource = KTM_890_ADV_R_2021; uint32_t checksum = 0; } LubeConfig_t; void StoreConfig_EEPROM(); void GetConfig_EEPROM(); void StorePersistence_EEPROM(); void GetPersistence_EEPROM(); void FormatConfig_EEPROM(); void FormatPersistence_EEPROM(); uint32_t Checksum_EEPROM(uint8_t const *data, size_t len); extern LubeConfig_t LubeConfig; extern persistenceData_t PersistenceData; extern uint16_t eePersistenceMarker; #endif // _CONFIG_H_