Make better use of constants

This commit is contained in:
Djuri Baars 2023-10-30 23:50:07 +01:00
parent 6fc1dfe707
commit 62358a7c6e
8 changed files with 41 additions and 17 deletions

View file

@ -35,6 +35,7 @@ fetch('/api/settings', {
document.getElementById('bgColor').querySelector('[value="0xF800"]').remove(); document.getElementById('bgColor').querySelector('[value="0xF800"]').remove();
} }
document.getElementById('customText').setAttribute('maxlength', jsonData.numScreens);
document.getElementById('output').classList.add("fg-" + jsonData.fgColor.toString(16)); document.getElementById('output').classList.add("fg-" + jsonData.fgColor.toString(16));
document.getElementById('output').classList.add("bg-" + jsonData.bgColor.toString(16)); document.getElementById('output').classList.add("bg-" + jsonData.bgColor.toString(16));

View file

@ -363,7 +363,7 @@ void previousScreen()
void showNetworkSettings() void showNetworkSettings()
{ {
std::array<String, 7> epdContent = {"", "", "", "", "", "", ""}; std::array<String, NUM_SCREENS> epdContent = {"", "", "", "", "", "", ""};
String ipAddr = WiFi.localIP().toString(); String ipAddr = WiFi.localIP().toString();
String subNet = WiFi.subnetMask().toString(); String subNet = WiFi.subnetMask().toString();

View file

@ -78,7 +78,7 @@ void onApiStatus(AsyncWebServerRequest *request)
root["numScreens"] = NUM_SCREENS; root["numScreens"] = NUM_SCREENS;
JsonArray data = root.createNestedArray("data"); JsonArray data = root.createNestedArray("data");
JsonArray rendered = root.createNestedArray("rendered"); JsonArray rendered = root.createNestedArray("rendered");
String epdContent[7]; String epdContent[NUM_SCREENS];
#ifdef WITH_RGB_LED #ifdef WITH_RGB_LED
@ -166,6 +166,7 @@ void onApiActionUpdate(AsyncWebServerRequest *request)
void onApiSettingsGet(AsyncWebServerRequest *request) void onApiSettingsGet(AsyncWebServerRequest *request)
{ {
StaticJsonDocument<768> root; StaticJsonDocument<768> root;
root["numScreens"] = NUM_SCREENS;
root["fgColor"] = getFgColor(); root["fgColor"] = getFgColor();
root["bgColor"] = getBgColor(); root["bgColor"] = getBgColor();
root["timerSeconds"] = timerSeconds; root["timerSeconds"] = timerSeconds;
@ -403,7 +404,7 @@ void onApiShowTextAdvanced(AsyncWebServerRequest *request, JsonVariant &json)
JsonArray screens = json.as<JsonArray>(); JsonArray screens = json.as<JsonArray>();
std::array<String, 7> epdContent; std::array<String, NUM_SCREENS> epdContent;
int i = 0; int i = 0;
for (JsonVariant s : screens) for (JsonVariant s : screens)
{ {

View file

@ -18,7 +18,7 @@ void CustomTextScreen::setSimpleText(const String& text)
customText.insert(customText.begin(), NUM_SCREENS - customText.length(), ' '); customText.insert(customText.begin(), NUM_SCREENS - customText.length(), ' ');
for (uint i = 0; i < 7; i++) for (uint i = 0; i < NUM_SCREENS; i++)
{ {
CustomTextScreen::epdContent[i] = customText[i]; CustomTextScreen::epdContent[i] = customText[i];
} }
@ -30,7 +30,7 @@ void CustomTextScreen::setText(std::array<String, NUM_SCREENS> customContent)
} }
std::array<String, 7> CustomTextScreen::getEpdContent() std::array<String, NUM_SCREENS> CustomTextScreen::getEpdContent()
{ {
return CustomTextScreen::epdContent; return CustomTextScreen::epdContent;
} }

View file

@ -16,5 +16,5 @@ class CustomTextScreen {
static void showScreen(); static void showScreen();
static std::array<String, NUM_SCREENS> getEpdContent(); static std::array<String, NUM_SCREENS> getEpdContent();
static void setSimpleText(const String& text); static void setSimpleText(const String& text);
static void setText(std::array<String, 7> customContent); static void setText(std::array<String, NUM_SCREENS> customContent);
}; };

View file

@ -7,13 +7,13 @@
class TimeScreen { class TimeScreen {
protected: protected:
static std::array<String, 7> epdContent; static std::array<String, NUM_SCREENS> epdContent;
static TimeScreen* instance_; static TimeScreen* instance_;
public: public:
static void init(); static void init();
static void showScreen(); static void showScreen();
static void onNewMinute(); static void onNewMinute();
static void onActivate(); static void onActivate();
static std::array<String, 7> getEpdContent(); static std::array<String, NUM_SCREENS> getEpdContent();
static TimeScreen* getInstance(); static TimeScreen* getInstance();
}; };

View file

@ -1,9 +1,27 @@
#include "epd.hpp" #include "epd.hpp"
#ifdef IS_S3 #ifdef IS_S3
Native_Pin EPD_CS[NUM_SCREENS] = {Native_Pin(2), Native_Pin(4), Native_Pin(6), Native_Pin(10), Native_Pin(33), Native_Pin(21), Native_Pin(17)}; Native_Pin EPD_CS[NUM_SCREENS] = {
Native_Pin EPD_BUSY[NUM_SCREENS] = {Native_Pin(3), Native_Pin(5), Native_Pin(7), Native_Pin(9), Native_Pin(37), Native_Pin(18), Native_Pin(16)}; Native_Pin(2), Native_Pin(4), Native_Pin(6), Native_Pin(10), Native_Pin(33), Native_Pin(21), Native_Pin(17),
MCP23X17_Pin EPD_RESET_MPD[NUM_SCREENS] = {MCP23X17_Pin(mcp, 8), MCP23X17_Pin(mcp, 9), MCP23X17_Pin(mcp, 10), MCP23X17_Pin(mcp, 11), MCP23X17_Pin(mcp, 12), MCP23X17_Pin(mcp, 13), MCP23X17_Pin(mcp, 14)}; #if NUM_SCREENS == 9
Native_Pin(-1),
Native_Pin(-1),
#endif
};
Native_Pin EPD_BUSY[NUM_SCREENS] = {
Native_Pin(3), Native_Pin(5), Native_Pin(7), Native_Pin(9), Native_Pin(37), Native_Pin(18), Native_Pin(16),
#if NUM_SCREENS == 9
Native_Pin(-1),
Native_Pin(-1),
#endif
};
MCP23X17_Pin EPD_RESET_MPD[NUM_SCREENS] = {
MCP23X17_Pin(mcp, 8), MCP23X17_Pin(mcp, 9), MCP23X17_Pin(mcp, 10), MCP23X17_Pin(mcp, 11), MCP23X17_Pin(mcp, 12), MCP23X17_Pin(mcp, 13), MCP23X17_Pin(mcp, 14),
#if NUM_SCREENS == 9
MCP23X17_Pin(mcp, 15),
MCP23X17_Pin(mcp, 16)
#endif
};
Native_Pin EPD_DC = Native_Pin(14); Native_Pin EPD_DC = Native_Pin(14);
@ -15,6 +33,10 @@ GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> displays[NUM_SCREENS] = {
GxEPD2_213_B74(&EPD_CS[4], &EPD_DC, &EPD_RESET_MPD[4], &EPD_BUSY[4]), GxEPD2_213_B74(&EPD_CS[4], &EPD_DC, &EPD_RESET_MPD[4], &EPD_BUSY[4]),
GxEPD2_213_B74(&EPD_CS[5], &EPD_DC, &EPD_RESET_MPD[5], &EPD_BUSY[5]), GxEPD2_213_B74(&EPD_CS[5], &EPD_DC, &EPD_RESET_MPD[5], &EPD_BUSY[5]),
GxEPD2_213_B74(&EPD_CS[6], &EPD_DC, &EPD_RESET_MPD[6], &EPD_BUSY[6]), GxEPD2_213_B74(&EPD_CS[6], &EPD_DC, &EPD_RESET_MPD[6], &EPD_BUSY[6]),
#if NUM_SCREENS == 9
GxEPD2_213_B74(&EPD_CS[7], &EPD_DC, &EPD_RESET_MPD[7], &EPD_BUSY[7]),
GxEPD2_213_B74(&EPD_CS[8], &EPD_DC, &EPD_RESET_MPD[8], &EPD_BUSY[8]),
#endif
}; };
const int SEM_WAIT_TIME = 10000; const int SEM_WAIT_TIME = 10000;
@ -22,8 +44,8 @@ const int SEM_WAIT_TIME = 10000;
uint32_t lastFullRefresh[NUM_SCREENS]; uint32_t lastFullRefresh[NUM_SCREENS];
std::array<String, 7> currentEpdContent; std::array<String, NUM_SCREENS> currentEpdContent;
std::array<String, 7> epdContent; std::array<String, NUM_SCREENS> epdContent;
TaskHandle_t tasks[NUM_SCREENS]; TaskHandle_t tasks[NUM_SCREENS];
SemaphoreHandle_t epdUpdateSemaphore[NUM_SCREENS]; SemaphoreHandle_t epdUpdateSemaphore[NUM_SCREENS];
@ -127,12 +149,12 @@ void taskEpd(void *pvParameters)
} }
} }
std::array<String, 7> getCurrentEpdContent() std::array<String, NUM_SCREENS> getCurrentEpdContent()
{ {
return currentEpdContent; return currentEpdContent;
} }
void setEpdContent(std::array<String, 7> newEpdContent) void setEpdContent(std::array<String, NUM_SCREENS> newEpdContent)
{ {
epdContent = newEpdContent; epdContent = newEpdContent;
} }

View file

@ -34,9 +34,9 @@ void setupDisplays();
void initDisplays(); void initDisplays();
void taskEpd(void *pvParameters); void taskEpd(void *pvParameters);
std::array<String, 7> getCurrentEpdContent(); std::array<String, NUM_SCREENS> getCurrentEpdContent();
void setEpdContent(std::array<String, 7> newEpdContent); void setEpdContent(std::array<String, NUM_SCREENS> newEpdContent);
void splitText(const uint dispNum, String top, String bottom, bool partial); void splitText(const uint dispNum, String top, String bottom, bool partial);
void showDigit(const uint dispNum, char chr, bool partial, const GFXfont *font); void showDigit(const uint dispNum, char chr, bool partial, const GFXfont *font);