diff --git a/include/Display_Graphic.h b/include/Display_Graphic.h index 2f3287ca..fdc49a80 100644 --- a/include/Display_Graphic.h +++ b/include/Display_Graphic.h @@ -36,7 +36,7 @@ public: DisplayGraphicClass(); ~DisplayGraphicClass(); - void init(Scheduler& scheduler, const DisplayType_t type, const uint8_t data, const uint8_t clk, const uint8_t cs, const uint8_t reset); + void init(Scheduler& scheduler); void setContrast(const uint8_t contrast); void setStatus(const bool turnOn); void setOrientation(const uint8_t rotation = DISPLAY_ROTATION); diff --git a/src/Display_Graphic.cpp b/src/Display_Graphic.cpp index 794dbdbe..f2126d39 100644 --- a/src/Display_Graphic.cpp +++ b/src/Display_Graphic.cpp @@ -3,8 +3,10 @@ * Copyright (C) 2023-2024 Thomas Basler and others */ #include "Display_Graphic.h" +#include "Configuration.h" #include "Datastore.h" #include "I18n.h" +#include "PinMapping.h" #include #include #include @@ -45,12 +47,13 @@ DisplayGraphicClass::~DisplayGraphicClass() delete _display; } -void DisplayGraphicClass::init(Scheduler& scheduler, const DisplayType_t type, const uint8_t data, const uint8_t clk, const uint8_t cs, const uint8_t reset) +void DisplayGraphicClass::init(Scheduler& scheduler) { - _display_type = type; + const PinMapping_t& pin = PinMapping.get(); + _display_type = static_cast(pin.display_type); if (isValidDisplay()) { auto constructor = display_types[_display_type]; - _display = constructor(reset, clk, data, cs); + _display = constructor(pin.display_reset, pin.display_clk, pin.display_data, pin.display_cs); if (_display_type == DisplayType_t::ST7567_GM12864I_59N) { _display->setI2CAddress(0x3F << 1); } @@ -62,6 +65,15 @@ void DisplayGraphicClass::init(Scheduler& scheduler, const DisplayType_t type, c scheduler.addTask(_loopTask); _loopTask.setInterval(_period); _loopTask.enable(); + + auto& config = Configuration.get(); + setDiagramMode(static_cast(config.Display.Diagram.Mode)); + setOrientation(config.Display.Rotation); + enablePowerSafe = config.Display.PowerSafe; + enableScreensaver = config.Display.ScreenSaver; + setContrast(config.Display.Contrast); + setLocale(config.Display.Locale); + setStartupDisplay(); } } diff --git a/src/main.cpp b/src/main.cpp index b2a4a391..a5ef340c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -78,7 +78,6 @@ void setup() MessageOutput.print("migrated... "); Configuration.migrate(); } - auto& config = Configuration.get(); MessageOutput.println("done"); // Read languate pack @@ -93,7 +92,6 @@ void setup() } else { MessageOutput.print("using default config "); } - const auto& pin = PinMapping.get(); MessageOutput.println("done"); // Initialize Network @@ -128,20 +126,7 @@ void setup() // Initialize Display MessageOutput.print("Initialize Display... "); - Display.init( - scheduler, - static_cast(pin.display_type), - pin.display_data, - pin.display_clk, - pin.display_cs, - pin.display_reset); - Display.setDiagramMode(static_cast(config.Display.Diagram.Mode)); - Display.setOrientation(config.Display.Rotation); - Display.enablePowerSafe = config.Display.PowerSafe; - Display.enableScreensaver = config.Display.ScreenSaver; - Display.setContrast(config.Display.Contrast); - Display.setLocale(config.Display.Locale); - Display.setStartupDisplay(); + Display.init(scheduler); MessageOutput.println("done"); // Initialize Single LEDs