restructured Folder-Structure
This commit is contained in:
21
Software/include/can.h
Normal file
21
Software/include/can.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef _CAN_H_
|
||||
#define _CAN_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <mcp_can.h>
|
||||
#include <SPI.h>
|
||||
#include "common.h"
|
||||
#include "globals.h"
|
||||
#include "dtc.h"
|
||||
|
||||
struct can_frame
|
||||
{
|
||||
unsigned long can_id;
|
||||
uint8_t can_dlc;
|
||||
uint8_t data[8] __attribute__((aligned(8)));
|
||||
};
|
||||
|
||||
void Init_CAN();
|
||||
uint32_t Process_CAN_WheelSpeed();
|
||||
|
||||
#endif
|
55
Software/include/common.h
Normal file
55
Software/include/common.h
Normal file
@@ -0,0 +1,55 @@
|
||||
#ifndef _COMMON_H_
|
||||
#define _COMMON_H_
|
||||
|
||||
#define Q(x) #x
|
||||
#define QUOTE(x) Q(x)
|
||||
|
||||
#if PCB_REV == 1
|
||||
#define GPIO_BUTTON D7
|
||||
#define GPIO_LED D8
|
||||
#define GPIO_TRIGGER D6
|
||||
#define GPIO_PUMP D5
|
||||
#elif PCB_REV == 2
|
||||
#define GPIO_BUTTON D7
|
||||
#define GPIO_LED D8
|
||||
#define GPIO_TRIGGER D6
|
||||
#define GPIO_PUMP D5
|
||||
#elif PCB_REV == 3
|
||||
#define GPIO_BUTTON D4
|
||||
#define GPIO_LED D3
|
||||
#define GPIO_TRIGGER D6
|
||||
#define GPIO_PUMP D0
|
||||
#define GPIO_CS_CAN D8
|
||||
#elif PCB_REV == 4
|
||||
#define GPIO_BUTTON D4
|
||||
#define GPIO_LED D3
|
||||
#define GPIO_TRIGGER D6
|
||||
#define GPIO_PUMP D0
|
||||
#define GPIO_CS_CAN D8
|
||||
#endif
|
||||
|
||||
#ifndef HOST_NAME
|
||||
#define HOST_NAME "ChainLube_%06X" // Use printf-Formatting - Chip-ID (uin32_t) will be added
|
||||
#endif
|
||||
|
||||
#ifndef OTA_DELAY
|
||||
#define OTA_DELAY 50 // ticks -> 10ms / tick
|
||||
#endif
|
||||
|
||||
#define LUBE_PULSE_LENGHT_MS 160
|
||||
#define LUBE_PULSE_PAUSE_MS 340
|
||||
|
||||
// -> 2Hz PumpPulse
|
||||
// -> 49,7cc / h @ 2Hz
|
||||
// -> 49,7 ml / h @ 2Hz
|
||||
// -> 828,4µl / min @ 2Hz
|
||||
// -> 828,3µl / 60s
|
||||
// -> 13,81µl / 1s
|
||||
// -> 6,90µl / Pulse
|
||||
|
||||
#define DEFAULT_PUMP_DOSE 7
|
||||
|
||||
#define STARTUP_DELAY 5000
|
||||
#define SHUTDOWN_DELAY_MS 5000
|
||||
|
||||
#endif
|
138
Software/include/config.h
Normal file
138
Software/include/config.h
Normal file
@@ -0,0 +1,138 @@
|
||||
#ifndef _CONFIG_H_
|
||||
#define _CONFIG_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <Wire.h>
|
||||
#include <I2C_eeprom.h>
|
||||
#include "globals.h"
|
||||
#include "dtc.h"
|
||||
#include "common.h"
|
||||
|
||||
#if PCB_REV == 1 || PCB_REV == 2 || PCB_REV == 3
|
||||
#define EEPROM_SIZE_BYTES I2C_DEVICESIZE_24LC64
|
||||
#elif PCB_REV == 4
|
||||
#define EEPROM_SIZE_BYTES I2C_DEVICESIZE_24LC256
|
||||
#endif
|
||||
|
||||
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
|
||||
#endif
|
||||
} SpeedSource_t;
|
||||
|
||||
const char SpeedSourceString[][8] = {
|
||||
#ifdef FEATURE_ENABLE_TIMER
|
||||
"Timer",
|
||||
#endif
|
||||
"Impuls",
|
||||
#ifdef FEATURE_ENABLE_GPS
|
||||
"GPS",
|
||||
#endif
|
||||
#if FEATURE_ENABLE_CAN
|
||||
"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]);
|
||||
#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;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t EEPROM_Version = 0;
|
||||
uint32_t DistancePerLube_Default = 8000;
|
||||
uint32_t DistancePerLube_Rain = 4000;
|
||||
uint32_t tankCapacity_ml = 320;
|
||||
uint32_t amountPerDose_microL = DEFAULT_PUMP_DOSE;
|
||||
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;
|
||||
uint16_t BleedingPulses = 25;
|
||||
SpeedSource_t SpeedSource = SOURCE_IMPULSE;
|
||||
#ifdef FEATURE_ENABLE_GPS
|
||||
GPSBaudRate_t GPSBaudRate = BAUD_115200;
|
||||
#endif
|
||||
#ifdef FEATURE_ENABLE_CAN
|
||||
CANSource_t CANSource = KTM_890_ADV_R_2021;
|
||||
#endif
|
||||
bool LED_Mode_Flash = false;
|
||||
uint8_t LED_Max_Brightness = 255;
|
||||
uint8_t LED_Min_Brightness = 5;
|
||||
uint32_t checksum = 0;
|
||||
} LubeConfig_t;
|
||||
|
||||
const LubeConfig_t LubeConfig_defaults = {
|
||||
0, 8000, 4000, 320, DEFAULT_PUMP_DOSE, 30, 1, 150, 70, 18, 2000, 25, SOURCE_IMPULSE,
|
||||
#ifdef FEATURE_ENABLE_GPS
|
||||
BAUD_115200,
|
||||
#endif
|
||||
#ifdef FEATURE_ENABLE_CAN
|
||||
KTM_890_ADV_R_2021,
|
||||
#endif
|
||||
false,
|
||||
255,
|
||||
5,
|
||||
0};
|
||||
|
||||
void InitEEPROM();
|
||||
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);
|
||||
uint32_t ConfigSanityCheck(bool autocorrect = false);
|
||||
|
||||
extern LubeConfig_t LubeConfig;
|
||||
extern persistenceData_t PersistenceData;
|
||||
extern uint16_t eePersistenceMarker;
|
||||
#endif // _CONFIG_H_
|
46
Software/include/debugger.h
Normal file
46
Software/include/debugger.h
Normal file
@@ -0,0 +1,46 @@
|
||||
#ifndef _DEBUGGER_H_
|
||||
#define _DEBUGGER_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
#include "webui.h"
|
||||
|
||||
const char PROGMEM helpCmd[] = "sysinfo - System Info\n"
|
||||
"netinfo - WiFi Info\n"
|
||||
"formatPDS - Format Persistence EEPROM Data\n"
|
||||
"formatCFG - Format Configuration EEPROM Data\n"
|
||||
"checkEE - Check EEPROM with checksum\n"
|
||||
"dumpEE1k - dump the first 1kb of EEPROM to Serial\n"
|
||||
"dumpEE - dump the whole EPPROM to Serial\n"
|
||||
"resetPageEE - Reset the PersistenceData Page\n"
|
||||
"dumpCFG - print Config struct\n"
|
||||
"dumpPDS - print PersistanceStruct\n"
|
||||
"saveEE - save EE-Data\n"
|
||||
"showdtc - Show all DTCs\n"
|
||||
"dumpGlobals - print globals\n";
|
||||
|
||||
typedef enum DebugStatus_e
|
||||
{
|
||||
disabled,
|
||||
enabled
|
||||
} DebugStatus_t;
|
||||
|
||||
typedef enum DebugPorts_e
|
||||
{
|
||||
dbg_Serial,
|
||||
dbg_Webui,
|
||||
dbg_cntElements
|
||||
} DebugPorts_t;
|
||||
|
||||
const char sDebugPorts[dbg_cntElements][7] = {
|
||||
"Serial",
|
||||
"WebUI"};
|
||||
|
||||
extern DebugStatus_t DebuggerStatus[dbg_cntElements];
|
||||
|
||||
void initDebugger();
|
||||
void pushCANDebug(uint32_t id, uint8_t dlc, uint8_t *data);
|
||||
void Debug_pushMessage(const char *format, ...);
|
||||
void SetDebugportStatus(DebugPorts_t port, DebugStatus_t status);
|
||||
void Debug_Process();
|
||||
|
||||
#endif
|
61
Software/include/dtc.h
Normal file
61
Software/include/dtc.h
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef _DTC_H_
|
||||
#define _DTC_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
#define MAX_DTC_STORAGE 6
|
||||
|
||||
typedef enum DTCNums_e
|
||||
{
|
||||
DTC_TANK_EMPTY = 1,
|
||||
DTC_TANK_LOW,
|
||||
DTC_NO_EEPROM_FOUND,
|
||||
DTC_EEPROM_CFG_BAD,
|
||||
DTC_EEPROM_PDS_BAD,
|
||||
DTC_EEPROM_PDSADRESS_BAD,
|
||||
DTC_EEPROM_VERSION_BAD,
|
||||
DTC_FLASHFS_ERROR,
|
||||
DTC_FLASHFS_VERSION_ERROR,
|
||||
#ifdef FEATURE_ENABLE_GPS
|
||||
DTC_NO_GPS_SERIAL,
|
||||
#endif
|
||||
#ifdef FEATURE_ENABLE_CAN
|
||||
DTC_CAN_TRANSCEIVER_FAILED,
|
||||
DTC_NO_CAN_SIGNAL,
|
||||
#endif
|
||||
DTC_EEPROM_CFG_SANITY,
|
||||
DTC_LAST_DTC
|
||||
} DTCNums_t;
|
||||
|
||||
typedef enum DTCActive_e
|
||||
{
|
||||
DTC_NONE,
|
||||
DTC_ACTIVE,
|
||||
DTC_PREVIOUS
|
||||
} DTCActive_t;
|
||||
|
||||
typedef enum DTCSeverity_e
|
||||
{
|
||||
DTC_INFO,
|
||||
DTC_WARN,
|
||||
DTC_CRITICAL
|
||||
} DTCSeverity_t;
|
||||
|
||||
typedef struct DTCEntry_s
|
||||
{
|
||||
DTCNums_t Number;
|
||||
uint32_t timestamp;
|
||||
DTCActive_t active;
|
||||
DTCSeverity_t severity;
|
||||
uint32_t debugVal;
|
||||
} DTCEntry_t;
|
||||
|
||||
void MaintainDTC(DTCNums_t DTC_no, DTCSeverity_t DTC_severity, boolean active, uint32_t DebugValue = 0);
|
||||
void ClearDTC(DTCNums_t DTC_no);
|
||||
void ClearAllDTC();
|
||||
DTCNums_t getlastDTC(boolean only_active);
|
||||
DTCNums_t getlastDTC_Severity(boolean only_active, DTCSeverity_t severity);
|
||||
void DTC_Process();
|
||||
|
||||
extern DTCEntry_s DTCStorage[MAX_DTC_STORAGE];
|
||||
#endif
|
65
Software/include/globals.h
Normal file
65
Software/include/globals.h
Normal file
@@ -0,0 +1,65 @@
|
||||
#ifndef _GLOBALS_H_
|
||||
#define _GLOBALS_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
typedef enum eSystem_Status
|
||||
{
|
||||
sysStat_Startup,
|
||||
sysStat_Normal,
|
||||
sysStat_Rain,
|
||||
sysStat_Purge,
|
||||
sysStat_Error,
|
||||
sysStat_Shutdown
|
||||
} tSystem_Status;
|
||||
|
||||
typedef enum eEERequest
|
||||
{
|
||||
EE_IDLE,
|
||||
EE_CFG_SAVE,
|
||||
EE_CFG_LOAD,
|
||||
EE_CFG_FORMAT,
|
||||
EE_PDS_SAVE,
|
||||
EE_PDS_LOAD,
|
||||
EE_PDS_FORMAT,
|
||||
EE_FORMAT_ALL,
|
||||
EE_ALL_SAVE
|
||||
|
||||
} tEERequest;
|
||||
|
||||
typedef struct Globals_s
|
||||
{
|
||||
tSystem_Status systemStatus = sysStat_Startup;
|
||||
tSystem_Status resumeStatus = sysStat_Startup;
|
||||
char systemStatustxt[16] = "";
|
||||
uint16_t purgePulses = 0;
|
||||
eEERequest requestEEAction = EE_IDLE;
|
||||
char DeviceName[33];
|
||||
char FlashVersion[10];
|
||||
uint16_t eePersistanceAdress;
|
||||
uint8_t TankPercentage;
|
||||
bool hasDTC;
|
||||
bool measurementActive;
|
||||
uint32_t measuredPulses;
|
||||
} Globals_t;
|
||||
|
||||
extern Globals_t globals;
|
||||
|
||||
typedef struct Constants_s
|
||||
{
|
||||
uint8_t FW_Version_major;
|
||||
uint8_t FW_Version_minor;
|
||||
uint8_t Required_Flash_Version_major;
|
||||
uint8_t Required_Flash_Version_minor;
|
||||
char GitHash[11];
|
||||
} Constants_t;
|
||||
|
||||
const Constants_t constants PROGMEM = {
|
||||
1,4, // Firmware_Version
|
||||
1,4, // Required Flash Version
|
||||
GIT_REV // Git-Hash-String
|
||||
};
|
||||
|
||||
void initGlobals();
|
||||
|
||||
#endif
|
12
Software/include/gps.h
Normal file
12
Software/include/gps.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef _GPS_H_
|
||||
#define _GPS_H_
|
||||
|
||||
#include <TinyGPSPlus.h>
|
||||
#include "config.h"
|
||||
#include "common.h"
|
||||
#include "dtc.h"
|
||||
|
||||
void Init_GPS();
|
||||
uint32_t Process_GPS_WheelSpeed();
|
||||
|
||||
#endif
|
35
Software/include/led_colors.h
Normal file
35
Software/include/led_colors.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _LED_COLORS_H_
|
||||
#define _LED_COLORS_H_
|
||||
|
||||
#define COLOR_RED 0xFF0000
|
||||
#define COLOR_GREEN 0x00FF00
|
||||
#define COLOR_BLUE 0x0000FF
|
||||
#define COLOR_YELLOW 0xFF9600
|
||||
#define COLOR_ORANGE 0xFF2800
|
||||
#define COLOR_TEAL 0x00FF78
|
||||
#define COLOR_CYAN 0x00FFFF
|
||||
#define COLOR_PURPLE 0xB400FF
|
||||
#define COLOR_MAGENTA 0xFF0014
|
||||
#define COLOR_WHITE 0xFFFFFF
|
||||
#define COLOR_BLACK 0x000000
|
||||
#define COLOR_GOLD 0xFFDE1E
|
||||
#define COLOR_PINK 0xF25AFF
|
||||
#define COLOR_AQUA 0x32FFFF
|
||||
#define COLOR_JADE 0x00FF28
|
||||
#define COLOR_AMBER 0xFF6400
|
||||
#define COLOR_WARM_WHITE 0xFDF5E6
|
||||
|
||||
|
||||
#define LED_DEFAULT_COLOR COLOR_WARM_WHITE
|
||||
#define LED_STARTUP_NORMAL COLOR_WARM_WHITE
|
||||
#define LED_STARTUP_TANKWARN COLOR_AMBER
|
||||
#define LED_NORMAL_COLOR COLOR_GREEN
|
||||
#define LED_RAIN_COLOR COLOR_BLUE
|
||||
#define LED_WIFI_BLINK COLOR_YELLOW
|
||||
#define LED_PURGE_COLOR COLOR_MAGENTA
|
||||
#define LED_ERROR_BLINK COLOR_RED
|
||||
#define LED_SHUTDOWN_BLINK COLOR_CYAN
|
||||
|
||||
|
||||
|
||||
#endif /* _LED_COLORS_H_ */
|
14
Software/include/lubeapp.h
Normal file
14
Software/include/lubeapp.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef _LUBEAPP_H_
|
||||
#define _LUBEAPP_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <stdlib.h>
|
||||
#include "config.h"
|
||||
#include "common.h"
|
||||
#include "globals.h"
|
||||
#include "dtc.h"
|
||||
|
||||
void RunLubeApp(uint32_t add_milimeters);
|
||||
void LubePulse();
|
||||
|
||||
#endif
|
37
Software/include/sanitycheck.h
Normal file
37
Software/include/sanitycheck.h
Normal file
@@ -0,0 +1,37 @@
|
||||
#ifndef _SANITYCHECK_H_
|
||||
#define _SANITYCHECK_H_
|
||||
|
||||
#ifndef PCB_REV
|
||||
#error "You must define PCB_REV"
|
||||
#else
|
||||
#if PCB_REV < 1 || PCB_REV > 4
|
||||
#error "Unsupported PCB-Revision"
|
||||
#endif
|
||||
|
||||
#if PCB_REV < 3 && defined(FEATURE_ENABLE_CAN)
|
||||
#error "CAN-Feature unsupported with this PCB-Rev"
|
||||
#endif
|
||||
#if PCB_REV < 4 && defined(DFEATURE_ENABLE_GPS)
|
||||
#error "GPS-Feature unsupported with this PCB-Rev"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef ADMIN_PASSWORD
|
||||
#error "You need to define ADMIN_PASSWORD for OTA-Update"
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_ENABLE_WIFI_CLIENT
|
||||
#ifndef WIFI_PASSWORD_CLIENT
|
||||
#error "You must define an WIFI_PASSWORD for Client-Mode"
|
||||
#endif
|
||||
|
||||
#ifndef WIFI_SSID_CLIENT
|
||||
#error "You must define an WIFI_SSID for Client-Mode"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef WIFI_AP_PASSWORD
|
||||
#error "You must define an WIFI_AP_PASSWORD for Standalone AP-Mode"
|
||||
#endif
|
||||
|
||||
#endif //_SANITYCHECK_H_
|
27
Software/include/webui.h
Normal file
27
Software/include/webui.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef _WEBUI_H_
|
||||
#define _WEBUI_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <FS.h>
|
||||
#include <LittleFS.h>
|
||||
#include <ESPAsyncTCP.h>
|
||||
#include <ESPAsyncWebServer.h>
|
||||
#include <Updater.h>
|
||||
#include <ESP8266mDNS.h>
|
||||
#include <AsyncJson.h>
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "globals.h"
|
||||
#include "dtc.h"
|
||||
#include "common.h"
|
||||
#include "debugger.h"
|
||||
|
||||
void initWebUI();
|
||||
void Webserver_Process();
|
||||
|
||||
#ifdef FEATURE_ENABLE_WEBSOCKETS
|
||||
void Websocket_PushLiveDebug(String Message);
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user