Move all display related initialization inside the display class

This commit is contained in:
Thomas Basler
2025-02-08 00:41:16 +01:00
parent 7907d23115
commit 328936dfa0
3 changed files with 17 additions and 20 deletions

View File

@@ -36,7 +36,7 @@ public:
DisplayGraphicClass(); DisplayGraphicClass();
~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 setContrast(const uint8_t contrast);
void setStatus(const bool turnOn); void setStatus(const bool turnOn);
void setOrientation(const uint8_t rotation = DISPLAY_ROTATION); void setOrientation(const uint8_t rotation = DISPLAY_ROTATION);

View File

@@ -3,8 +3,10 @@
* Copyright (C) 2023-2024 Thomas Basler and others * Copyright (C) 2023-2024 Thomas Basler and others
*/ */
#include "Display_Graphic.h" #include "Display_Graphic.h"
#include "Configuration.h"
#include "Datastore.h" #include "Datastore.h"
#include "I18n.h" #include "I18n.h"
#include "PinMapping.h"
#include <NetworkSettings.h> #include <NetworkSettings.h>
#include <map> #include <map>
#include <time.h> #include <time.h>
@@ -45,12 +47,13 @@ DisplayGraphicClass::~DisplayGraphicClass()
delete _display; 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<DisplayType_t>(pin.display_type);
if (isValidDisplay()) { if (isValidDisplay()) {
auto constructor = display_types[_display_type]; 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) { if (_display_type == DisplayType_t::ST7567_GM12864I_59N) {
_display->setI2CAddress(0x3F << 1); _display->setI2CAddress(0x3F << 1);
} }
@@ -62,6 +65,15 @@ void DisplayGraphicClass::init(Scheduler& scheduler, const DisplayType_t type, c
scheduler.addTask(_loopTask); scheduler.addTask(_loopTask);
_loopTask.setInterval(_period); _loopTask.setInterval(_period);
_loopTask.enable(); _loopTask.enable();
auto& config = Configuration.get();
setDiagramMode(static_cast<DiagramMode_t>(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();
} }
} }

View File

@@ -78,7 +78,6 @@ void setup()
MessageOutput.print("migrated... "); MessageOutput.print("migrated... ");
Configuration.migrate(); Configuration.migrate();
} }
auto& config = Configuration.get();
MessageOutput.println("done"); MessageOutput.println("done");
// Read languate pack // Read languate pack
@@ -93,7 +92,6 @@ void setup()
} else { } else {
MessageOutput.print("using default config "); MessageOutput.print("using default config ");
} }
const auto& pin = PinMapping.get();
MessageOutput.println("done"); MessageOutput.println("done");
// Initialize Network // Initialize Network
@@ -128,20 +126,7 @@ void setup()
// Initialize Display // Initialize Display
MessageOutput.print("Initialize Display... "); MessageOutput.print("Initialize Display... ");
Display.init( Display.init(scheduler);
scheduler,
static_cast<DisplayType_t>(pin.display_type),
pin.display_data,
pin.display_clk,
pin.display_cs,
pin.display_reset);
Display.setDiagramMode(static_cast<DiagramMode_t>(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();
MessageOutput.println("done"); MessageOutput.println("done");
// Initialize Single LEDs // Initialize Single LEDs