138 lines
3.2 KiB
C
Raw Normal View History

2022-01-09 20:51:16 +01:00
#ifndef _CONFIG_H_
#define _CONFIG_H_
#include <Arduino.h>
2022-01-31 09:26:10 +01:00
#include <Wire.h>
#include <I2C_eeprom.h>
2022-02-04 21:24:15 +01:00
#include "globals.h"
2022-03-09 23:05:17 +01:00
#include "dtc.h"
2022-08-24 23:10:11 +02:00
#include "common.h"
2022-01-31 09:26:10 +01:00
2023-02-28 10:12:18 +01:00
#if PCB_REV == 1 || PCB_REV == 2 || PCB_REV == 3
#define EEPROM_SIZE_BYTES I2C_DEVICESIZE_24LC64
#elif PCB_REV == 4
2022-01-31 09:26:10 +01:00
#define EEPROM_SIZE_BYTES I2C_DEVICESIZE_24LC256
2023-02-28 10:12:18 +01:00
#endif
2022-01-09 20:51:16 +01:00
typedef enum SpeedSource_e
{
#ifdef FEATURE_ENABLE_TIMER
SOURCE_TIME,
#endif
SOURCE_IMPULSE,
#ifdef FEATURE_ENABLE_GPS
SOURCE_GPS,
#endif
#if FEATURE_ENABLE_CAN
SOURCE_CAN
2022-01-31 09:26:10 +01:00
#endif
} SpeedSource_t;
2022-02-04 21:28:49 +01:00
const char SpeedSourceString[][8] = {
#ifdef FEATURE_ENABLE_TIMER
2022-02-04 21:28:49 +01:00
"Timer",
#endif
2022-02-04 21:28:49 +01:00
"Impuls",
#ifdef FEATURE_ENABLE_GPS
2022-02-04 21:28:49 +01:00
"GPS",
#endif
#if FEATURE_ENABLE_CAN
2022-02-04 21:28:49 +01:00
"CAN-Bus"
#endif
};
#ifdef FEATURE_ENABLE_GPS
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]);
#endif
#ifdef FEATURE_ENABLE_CAN
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]);
2022-01-31 09:26:10 +01:00
#endif
const size_t SpeedSourceString_Elements = sizeof(SpeedSourceString) / sizeof(SpeedSourceString[0]);
typedef struct
{
uint16_t writeCycleCounter = 0;
uint32_t tankRemain_microL = 0;
uint32_t TravelDistance_highRes_mm = 0;
uint32_t odometer_mm = 0;
uint32_t odometer = 0;
uint32_t checksum = 0;
} persistenceData_t;
2022-01-09 20:51:16 +01:00
typedef struct
{
uint8_t EEPROM_Version = 0;
2022-02-04 21:28:49 +01:00
uint32_t DistancePerLube_Default = 8000;
uint32_t DistancePerLube_Rain = 4000;
2022-01-09 20:51:16 +01:00
uint32_t tankCapacity_ml = 320;
uint32_t amountPerDose_microL = DEFAULT_PUMP_DOSE;
2022-01-09 20:51:16 +01:00
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;
2022-08-21 15:47:22 +02:00
uint16_t BleedingPulses = 25;
SpeedSource_t SpeedSource = SOURCE_IMPULSE;
#ifdef FEATURE_ENABLE_GPS
2022-02-27 22:23:58 +01:00
GPSBaudRate_t GPSBaudRate = BAUD_115200;
#endif
#ifdef FEATURE_ENABLE_CAN
CANSource_t CANSource = KTM_890_ADV_R_2021;
2022-01-31 09:26:10 +01:00
#endif
2023-03-02 22:30:42 +01:00
bool LED_Mode_Flash = false;
uint8_t LED_Max_Brightness = 255;
uint8_t LED_Min_Brightness = 5;
2022-01-09 20:51:16 +01:00
uint32_t checksum = 0;
} LubeConfig_t;
2023-02-19 14:42:40 +01:00
const LubeConfig_t LubeConfig_defaults = {
2022-08-24 23:08:29 +02:00
0, 8000, 4000, 320, DEFAULT_PUMP_DOSE, 30, 1, 150, 70, 18, 2000, 25, SOURCE_IMPULSE,
2022-08-24 20:59:00 +02:00
#ifdef FEATURE_ENABLE_GPS
BAUD_115200,
#endif
#ifdef FEATURE_ENABLE_CAN
KTM_890_ADV_R_2021,
#endif
2023-03-02 22:30:42 +01:00
false,
255,
5,
2022-08-24 20:59:00 +02:00
0};
2022-01-31 09:26:10 +01:00
void InitEEPROM();
2022-02-04 21:24:15 +01:00
void EEPROM_Process();
2022-01-09 20:51:16 +01:00
void StoreConfig_EEPROM();
void GetConfig_EEPROM();
void StorePersistence_EEPROM();
void GetPersistence_EEPROM();
void FormatConfig_EEPROM();
void FormatPersistence_EEPROM();
2022-01-09 20:51:16 +01:00
uint32_t Checksum_EEPROM(uint8_t const *data, size_t len);
2022-01-31 09:26:10 +01:00
void dumpEEPROM(uint16_t memoryAddress, uint16_t length);
void MovePersistencePage_EEPROM(boolean reset);
uint32_t ConfigSanityCheck(bool autocorrect = false);
2022-01-09 20:51:16 +01:00
extern LubeConfig_t LubeConfig;
extern persistenceData_t PersistenceData;
extern uint16_t eePersistenceMarker;
2022-01-09 20:51:16 +01:00
#endif // _CONFIG_H_