Compare commits
	
		
			2 Commits
		
	
	
		
			4843cc15c9
			...
			a6ae30d655
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a6ae30d655 | |||
| 01af8cba3c | 
@@ -33,8 +33,12 @@ build_flags =
 | 
			
		||||
  -DWIFI_AP_IP_GW=10,0,0,1
 | 
			
		||||
  -DFEATURE_ENABLE_WIFI_CLIENT
 | 
			
		||||
  -DFEATURE_ENABLE_REMOTE_DEBUG
 | 
			
		||||
  ;-DFEATURE_ENABLE_OLED
 | 
			
		||||
  ;-DFEATURE_ENABLE_CAN
 | 
			
		||||
  ;-DFEATURE_ENABLE_GPS
 | 
			
		||||
  -DPCB_REV=2
 | 
			
		||||
 | 
			
		||||
build_type = debug
 | 
			
		||||
 | 
			
		||||
board_build.filesystem = littlefs
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,11 +4,25 @@
 | 
			
		||||
#define Q(x) #x
 | 
			
		||||
#define QUOTE(x) Q(x)
 | 
			
		||||
 | 
			
		||||
#define GPIO_BUTTON D4
 | 
			
		||||
#define GPIO_LED D3
 | 
			
		||||
#define GPIO_TRIGGER D6
 | 
			
		||||
#define GPIO_PUMP D0
 | 
			
		||||
#define GPIO_CS_CAN D8
 | 
			
		||||
#ifndef PCB_REV
 | 
			
		||||
    #error "You must define PCB_REV"
 | 
			
		||||
#elif PCB_REV == 2
 | 
			
		||||
    #define GPIO_BUTTON D7
 | 
			
		||||
    #define GPIO_LED D8
 | 
			
		||||
    #define GPIO_TRIGGER D6
 | 
			
		||||
    #define GPIO_PUMP D5
 | 
			
		||||
#elif PCB_REV == 1 || PCB_REV == 3
 | 
			
		||||
    #define GPIO_BUTTON D5
 | 
			
		||||
    #define GPIO_LED D6
 | 
			
		||||
    #define GPIO_TRIGGER D4
 | 
			
		||||
    #define GPIO_PUMP D3
 | 
			
		||||
#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
 | 
			
		||||
 
 | 
			
		||||
@@ -54,6 +54,11 @@ void EEPROM_Process()
 | 
			
		||||
    GetPersistence_EEPROM();
 | 
			
		||||
    globals.requestEEAction = EE_IDLE;
 | 
			
		||||
    break;
 | 
			
		||||
  case EE_ALL_SAVE:
 | 
			
		||||
    StorePersistence_EEPROM();
 | 
			
		||||
    StoreConfig_EEPROM();
 | 
			
		||||
    globals.requestEEAction = EE_IDLE;
 | 
			
		||||
    break;
 | 
			
		||||
  case EE_IDLE:
 | 
			
		||||
  default:
 | 
			
		||||
    globals.requestEEAction = EE_IDLE;
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,8 @@ typedef enum eEERequest
 | 
			
		||||
  EE_CFG_SAVE,
 | 
			
		||||
  EE_CFG_LOAD,
 | 
			
		||||
  EE_PDS_SAVE,
 | 
			
		||||
  EE_PDS_LOAD
 | 
			
		||||
  EE_PDS_LOAD,
 | 
			
		||||
  EE_ALL_SAVE
 | 
			
		||||
} tEERequest;
 | 
			
		||||
 | 
			
		||||
typedef struct Globals_s
 | 
			
		||||
 
 | 
			
		||||
@@ -81,22 +81,22 @@ void RunLubeApp(uint32_t add_milimeters)
 | 
			
		||||
    switch (globals.systemStatus)
 | 
			
		||||
    {
 | 
			
		||||
    case sysStat_Normal:
 | 
			
		||||
        strcpy(globals.systemStatustxt, PSTR("Normal"));
 | 
			
		||||
        strcpy_P(globals.systemStatustxt, PSTR("Normal"));
 | 
			
		||||
        break;
 | 
			
		||||
    case sysStat_Purge:
 | 
			
		||||
        strcpy(globals.systemStatustxt, PSTR("Purge"));
 | 
			
		||||
        strcpy_P(globals.systemStatustxt, PSTR("Purge"));
 | 
			
		||||
        break;
 | 
			
		||||
    case sysStat_Rain:
 | 
			
		||||
        strcpy(globals.systemStatustxt, PSTR("Rain"));
 | 
			
		||||
        strcpy_P(globals.systemStatustxt, PSTR("Rain"));
 | 
			
		||||
        break;
 | 
			
		||||
    case sysStat_Startup:
 | 
			
		||||
        strcpy(globals.systemStatustxt, PSTR("Startup"));
 | 
			
		||||
        strcpy_P(globals.systemStatustxt, PSTR("Startup"));
 | 
			
		||||
        break;
 | 
			
		||||
    case sysStat_Error:
 | 
			
		||||
        strcpy(globals.systemStatustxt, PSTR("Error"));
 | 
			
		||||
        strcpy_P(globals.systemStatustxt, PSTR("Error"));
 | 
			
		||||
        break;
 | 
			
		||||
    case sysStat_Shutdown:
 | 
			
		||||
        strcpy(globals.systemStatustxt, PSTR("Shutdown"));
 | 
			
		||||
        strcpy_P(globals.systemStatustxt, PSTR("Shutdown"));
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,8 @@
 | 
			
		||||
#include <Arduino.h>
 | 
			
		||||
#include <Wire.h>
 | 
			
		||||
#ifdef FEATURE_ENABLE_OLED
 | 
			
		||||
#include <U8g2lib.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include <ESP8266WiFi.h>
 | 
			
		||||
#include <ArduinoOTA.h>
 | 
			
		||||
 | 
			
		||||
@@ -45,13 +47,15 @@ Globals_t globals;
 | 
			
		||||
uint32_t TravelDistance_highRes;
 | 
			
		||||
volatile uint32_t wheel_pulse = 0;
 | 
			
		||||
 | 
			
		||||
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(-1);
 | 
			
		||||
CRGB leds[1];
 | 
			
		||||
 | 
			
		||||
// Function-Prototypes
 | 
			
		||||
void IRAM_ATTR trigger_ISR();
 | 
			
		||||
void LED_Process(uint8_t override = false, CRGB setColor = CRGB::White);
 | 
			
		||||
#ifdef FEATURE_ENABLE_OLED
 | 
			
		||||
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(-1);
 | 
			
		||||
void Display_Process();
 | 
			
		||||
#endif
 | 
			
		||||
void Button_Process();
 | 
			
		||||
void toggleWiFiAP(boolean shutdown = false);
 | 
			
		||||
void SystemShutdown();
 | 
			
		||||
@@ -105,11 +109,11 @@ void setup()
 | 
			
		||||
  InitEEPROM();
 | 
			
		||||
  GetConfig_EEPROM();
 | 
			
		||||
  GetPersistence_EEPROM();
 | 
			
		||||
 | 
			
		||||
#ifdef FEATURE_ENABLE_OLED
 | 
			
		||||
  u8x8.begin();
 | 
			
		||||
  u8x8.setFont(u8x8_font_chroma48medium8_r);
 | 
			
		||||
 | 
			
		||||
  FastLED.addLeds<WS2811, GPIO_LED, GRB>(leds, 1); // GRB ordering is assumed
 | 
			
		||||
#endif
 | 
			
		||||
  FastLED.addLeds<WS2811, GPIO_LED, RGB>(leds, 1); // GRB ordering is assumed
 | 
			
		||||
 | 
			
		||||
  switch (LubeConfig.SpeedSource)
 | 
			
		||||
  {
 | 
			
		||||
@@ -154,7 +158,7 @@ void setup()
 | 
			
		||||
  ArduinoOTA.setPort(8266);
 | 
			
		||||
  ArduinoOTA.setHostname(globals.DeviceName);
 | 
			
		||||
  ArduinoOTA.setPassword(QUOTE(ADMIN_PASSWORD));
 | 
			
		||||
 | 
			
		||||
#ifdef FEATURE_ENABLE_OLED
 | 
			
		||||
  ArduinoOTA.onStart([]()
 | 
			
		||||
                     {
 | 
			
		||||
                       u8x8.clearDisplay();
 | 
			
		||||
@@ -180,12 +184,14 @@ void setup()
 | 
			
		||||
                     u8x8.clearDisplay();
 | 
			
		||||
                     u8x8.drawString(0, 0, "OTA-Restart");
 | 
			
		||||
                     u8x8.refreshDisplay(); });
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
  ArduinoOTA.begin();
 | 
			
		||||
 | 
			
		||||
#ifdef FEATURE_ENABLE_OLED
 | 
			
		||||
  u8x8.clearDisplay();
 | 
			
		||||
  u8x8.drawString(0, 0, "KTM ChainLube V1");
 | 
			
		||||
  u8x8.refreshDisplay();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  initWebUI();
 | 
			
		||||
  initGlobals();
 | 
			
		||||
@@ -218,7 +224,9 @@ void loop()
 | 
			
		||||
 | 
			
		||||
  RunLubeApp(wheelDistance);
 | 
			
		||||
  EEPROMCyclicPDSTicker.update();
 | 
			
		||||
#ifdef FEATURE_ENABLE_OLED
 | 
			
		||||
  Display_Process();
 | 
			
		||||
#endif
 | 
			
		||||
  Button_Process();
 | 
			
		||||
  LED_Process();
 | 
			
		||||
  EEPROM_Process();
 | 
			
		||||
@@ -277,7 +285,7 @@ void processCmdRemoteDebug()
 | 
			
		||||
  else if (lastCmd == "dumpPDS")
 | 
			
		||||
    RemoteDebug_dumpPersistance();
 | 
			
		||||
  else if (lastCmd == "saveEE")
 | 
			
		||||
    StoreConfig_EEPROM();
 | 
			
		||||
    globals.requestEEAction == EE_ALL_SAVE;
 | 
			
		||||
  else if (lastCmd == "showdtc")
 | 
			
		||||
    RemoteDebug_ShowDTCs();
 | 
			
		||||
}
 | 
			
		||||
@@ -572,7 +580,7 @@ void LED_Process(uint8_t override, CRGB SetColor)
 | 
			
		||||
  }
 | 
			
		||||
  FastLED.show();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef FEATURE_ENABLE_OLED
 | 
			
		||||
void Display_Process()
 | 
			
		||||
{
 | 
			
		||||
  static tSystem_Status oldSysStatus = sysStat_Startup;
 | 
			
		||||
@@ -604,6 +612,7 @@ void Display_Process()
 | 
			
		||||
  }
 | 
			
		||||
  u8x8.refreshDisplay();
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void Button_Process()
 | 
			
		||||
{
 | 
			
		||||
@@ -740,6 +749,7 @@ uint32_t Process_Impulse_WheelSpeed()
 | 
			
		||||
  return add_milimeters;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef FEATURE_ENABLE_REMOTE_DEBUG
 | 
			
		||||
void RemoteDebug_ShowDTCs()
 | 
			
		||||
{
 | 
			
		||||
  char buff_timestamp[16]; // Format: DD-hh:mm:ss:xxx
 | 
			
		||||
@@ -767,3 +777,4 @@ void RemoteDebug_ShowDTCs()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
@@ -98,20 +98,24 @@ String processor(const String &var)
 | 
			
		||||
  }
 | 
			
		||||
  if (var == "SHOW_IMPULSE_SETTINGS")
 | 
			
		||||
    return LubeConfig.SpeedSource == SOURCE_IMPULSE ? "" : "hidden";
 | 
			
		||||
#ifdef FEATURE_ENABLE_CAN
 | 
			
		||||
  if (var == "SHOW_CAN_SETTINGS")
 | 
			
		||||
#ifdef FEATURE_ENABLE_CAN
 | 
			
		||||
    return LubeConfig.SpeedSource == SOURCE_CAN ? "" : "hidden";
 | 
			
		||||
#else
 | 
			
		||||
    return "hidden";
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef FEATURE_ENABLE_GPS
 | 
			
		||||
  if (var == "SHOW_GPS_SETTINGS")
 | 
			
		||||
#ifdef FEATURE_ENABLE_GPS
 | 
			
		||||
    return LubeConfig.SpeedSource == SOURCE_GPS ? "" : "hidden";
 | 
			
		||||
#else
 | 
			
		||||
    return "hidden";
 | 
			
		||||
#endif
 | 
			
		||||
  if (var == "SHOW_DTC_TABLE")
 | 
			
		||||
    return globals.systemStatus == sysStat_Error ? "" : "hidden";
 | 
			
		||||
 | 
			
		||||
  if (var == "DTC_TABLE")
 | 
			
		||||
  {
 | 
			
		||||
    String temp;
 | 
			
		||||
    String temp = "";
 | 
			
		||||
    char buff_timestamp[16]; // Format: DD-hh:mm:ss:xxx
 | 
			
		||||
 | 
			
		||||
    for (uint32_t i = 0; i < MAX_DTC_STORAGE; i++)
 | 
			
		||||
@@ -125,7 +129,7 @@ String processor(const String &var)
 | 
			
		||||
                DTCStorage[i].timestamp / 1000 % 60,   // Seconds
 | 
			
		||||
                DTCStorage[i].timestamp % 1000);       // milliseconds
 | 
			
		||||
 | 
			
		||||
        temp = "<tr><td>" + String(buff_timestamp);
 | 
			
		||||
        temp = temp + "<tr><td>" + String(buff_timestamp);
 | 
			
		||||
        temp = temp + "</td><td>" + String(DTCStorage[i].Number) + "</td><td>";
 | 
			
		||||
 | 
			
		||||
        if (DTCStorage[i].active == DTC_ACTIVE)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user