From b96d87b933638b127d7060ed458e8b4319797666 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Thu, 19 Jan 2023 20:50:57 +0100 Subject: [PATCH] Read display pinmapping from json file --- include/PinMapping.h | 5 +++++ src/PinMapping.cpp | 33 +++++++++++++++++++++++++++++++++ src/main.cpp | 9 +++++++-- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/include/PinMapping.h b/include/PinMapping.h index 163dbbe..1d0ad4d 100644 --- a/include/PinMapping.h +++ b/include/PinMapping.h @@ -24,6 +24,11 @@ struct PinMapping_t { int eth_mdio; eth_phy_type_t eth_type; eth_clock_mode_t eth_clk_mode; + uint8_t display_type; + uint8_t display_data; + uint8_t display_clk; + uint8_t display_cs; + uint8_t display_reset; }; class PinMappingClass { diff --git a/src/PinMapping.cpp b/src/PinMapping.cpp index 2fccabd..a0f09f7 100644 --- a/src/PinMapping.cpp +++ b/src/PinMapping.cpp @@ -10,6 +10,26 @@ #define JSON_BUFFER_SIZE 6144 +#ifndef DISPLAY_TYPE +#define DISPLAY_TYPE 0 +#endif + +#ifndef DISPLAY_DATA +#define DISPLAY_DATA 255 +#endif + +#ifndef DISPLAY_CLK +#define DISPLAY_CLK 255 +#endif + +#ifndef DISPLAY_CS +#define DISPLAY_CS 255 +#endif + +#ifndef DISPLAY_RESET +#define DISPLAY_RESET 255 +#endif + PinMappingClass PinMapping; PinMappingClass::PinMappingClass() @@ -34,6 +54,13 @@ PinMappingClass::PinMappingClass() _pinMapping.eth_mdio = ETH_PHY_MDIO; _pinMapping.eth_type = ETH_PHY_TYPE; _pinMapping.eth_clk_mode = ETH_CLK_MODE; + + _pinMapping.display_type = DISPLAY_TYPE; + _pinMapping.display_data = DISPLAY_DATA; + _pinMapping.display_clk = DISPLAY_CLK; + _pinMapping.display_cs = DISPLAY_CS; + _pinMapping.display_reset = DISPLAY_RESET; + } PinMapping_t& PinMappingClass::get() @@ -80,6 +107,12 @@ bool PinMappingClass::init(const String& deviceMapping) _pinMapping.eth_type = doc[i]["eth"]["type"] | ETH_PHY_TYPE; _pinMapping.eth_clk_mode = doc[i]["eth"]["clk_mode"] | ETH_CLK_MODE; + _pinMapping.display_type = doc[i]["display"]["type"] | DISPLAY_TYPE; + _pinMapping.display_data = doc[i]["display"]["data"] | DISPLAY_DATA; + _pinMapping.display_clk = doc[i]["display"]["clk"] | DISPLAY_CLK; + _pinMapping.display_cs = doc[i]["display"]["cs"] | DISPLAY_CS; + _pinMapping.display_reset = doc[i]["display"]["reset"] | DISPLAY_RESET; + return true; } } diff --git a/src/main.cpp b/src/main.cpp index eccac5b..2535e00 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -65,6 +65,7 @@ void setup() } else { MessageOutput.print(F("using default config ")); } + const PinMapping_t& pin = PinMapping.get(); MessageOutput.println(F("done")); // Initialize WiFi @@ -93,7 +94,12 @@ void setup() // Initialize Display MessageOutput.print(F("Initialize Display... ")); - Display.init(DisplayType_t::SSD1306, SDA, SCL, 255, 255); + Display.init( + static_cast(pin.display_type), + pin.display_data, + pin.display_clk, + pin.display_cs, + pin.display_reset); MessageOutput.println(F("done")); // Check for default DTU serial @@ -114,7 +120,6 @@ void setup() MessageOutput.print(F("Initialize Hoymiles interface... ")); if (PinMapping.isValidNrf24Config()) { SPIClass* spiClass = new SPIClass(HSPI); - PinMapping_t& pin = PinMapping.get(); spiClass->begin(pin.nrf24_clk, pin.nrf24_miso, pin.nrf24_mosi, pin.nrf24_cs); Hoymiles.setMessageOutput(&MessageOutput); Hoymiles.init(spiClass, pin.nrf24_en, pin.nrf24_irq);