#ifndef _CONFIG_H_ #define _CONFIG_H_ #include #if PCB_REVISION >= 12 #include #include #else #include #endif #include "globals.h" #define EEPROM_SIZE_BYTES I2C_DEVICESIZE_24LC256 typedef enum SpeedSource_e { SOURCE_TIME, SOURCE_IMPULSE, SOURCE_GPS, #if PCB_REVISION == 13 SOURCE_CAN #endif } SpeedSource_t; const char SpeedSourceString[][8] = { "Timer", "Impuls", "GPS", #if PCB_REVISION >= 13 "CAN-Bus" #endif }; 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]); #if PCB_REVISION >= 13 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]); #endif const size_t SpeedSourceString_Elements = sizeof(SpeedSourceString) / sizeof(SpeedSourceString[0]); typedef struct { uint16_t writeCycleCounter = 0; uint32_t tankRemain_µl = 0; uint32_t TravelDistance_highRes = 0; uint32_t checksum = 0; } persistenceData_t; typedef struct { uint32_t DistancePerLube_Default = 8000; uint32_t DistancePerLube_Rain = 4000; uint32_t tankCapacity_ml = 320; uint32_t amountPerDose_µl = 72; 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_115200; #if PCB_REVISION == 13 CANSource_t CANSource = KTM_890_ADV_R_2021; #endif uint32_t checksum = 0; } LubeConfig_t; #if PCB_REVISION >= 12 void InitEEPROM(); #endif void EEPROM_Process(); 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); void dumpEEPROM(uint16_t memoryAddress, uint16_t length); void MovePersistencePage_EEPROM(boolean reset); uint16_t getPersistanceAddress(); extern LubeConfig_t LubeConfig; extern persistenceData_t PersistenceData; extern uint16_t eePersistenceMarker; #endif // _CONFIG_H_