From cf3d55201fdbe3864e870090f77536ceefa1e976 Mon Sep 17 00:00:00 2001 From: Florent Date: Fri, 11 Apr 2025 22:23:47 +0200 Subject: [PATCH] ui : manage colors and ensure fw using ssd1306 still compile --- examples/companion_radio/UITask.cpp | 8 ++++++ src/helpers/ui/DisplayDriver.h | 2 +- src/helpers/ui/SSD1306Display.cpp | 2 +- src/helpers/ui/ST7789Display.cpp | 33 +++++++++++++++++++++-- src/helpers/ui/ST7789Display.h | 2 +- variants/heltec_v2/platformio.ini | 8 +++--- variants/heltec_v3/platformio.ini | 10 +++---- variants/lilygo_t3s3/platformio.ini | 8 +++--- variants/lilygo_tbeam/platformio.ini | 4 +-- variants/lilygo_tlora_v2_1/platformio.ini | 10 +++---- variants/rak4631/platformio.ini | 8 +++--- variants/t114/platformio.ini | 16 +++++++---- 12 files changed, 77 insertions(+), 34 deletions(-) diff --git a/examples/companion_radio/UITask.cpp b/examples/companion_radio/UITask.cpp index 401284fb..01770363 100644 --- a/examples/companion_radio/UITask.cpp +++ b/examples/companion_radio/UITask.cpp @@ -89,22 +89,29 @@ void UITask::renderCurrScreen() { // render message preview _display->setCursor(0, 0); _display->setTextSize(1); + _display->setColor(DisplayDriver::GREEN); _display->print(_node_name); _display->setCursor(0, 12); + _display->setColor(DisplayDriver::YELLOW); _display->print(_origin); _display->setCursor(0, 24); + _display->setColor(DisplayDriver::LIGHT); _display->print(_msg); _display->setCursor(100, 9); _display->setTextSize(2); + _display->setColor(DisplayDriver::ORANGE); sprintf(tmp, "%d", _msgcount); _display->print(tmp); } else { // render 'home' screen + _display->setColor(DisplayDriver::BLUE); _display->drawXbm(0, 0, meshcore_logo, 128, 13); _display->setCursor(0, 20); _display->setTextSize(1); + + _display->setColor(DisplayDriver::LIGHT); _display->print(_node_name); _display->setCursor(0, 32); @@ -114,6 +121,7 @@ void UITask::renderCurrScreen() { //_display->printf("freq : %03.2f sf %d\n", _prefs.freq, _prefs.sf); //_display->printf("bw : %03.2f cr %d\n", _prefs.bw, _prefs.cr); } else if (_pin_code != 0) { + _display->setColor(DisplayDriver::RED); _display->setTextSize(2); _display->setCursor(0, 43); sprintf(tmp, "Pin:%d", _pin_code); diff --git a/src/helpers/ui/DisplayDriver.h b/src/helpers/ui/DisplayDriver.h index 7086b807..57aed85c 100644 --- a/src/helpers/ui/DisplayDriver.h +++ b/src/helpers/ui/DisplayDriver.h @@ -7,7 +7,7 @@ class DisplayDriver { protected: DisplayDriver(int w, int h) { _w = w; _h = h; } public: - enum Color { DARK, LIGHT }; + enum Color { DARK=0, LIGHT, RED, GREEN, BLUE, YELLOW, ORANGE }; // on b/w screen, colors will be !=0 synonym of light int width() const { return _w; } int height() const { return _h; } diff --git a/src/helpers/ui/SSD1306Display.cpp b/src/helpers/ui/SSD1306Display.cpp index 911dd6fa..55516378 100644 --- a/src/helpers/ui/SSD1306Display.cpp +++ b/src/helpers/ui/SSD1306Display.cpp @@ -38,7 +38,7 @@ void SSD1306Display::setTextSize(int sz) { } void SSD1306Display::setColor(Color c) { - _color = (c == LIGHT) ? SSD1306_WHITE : SSD1306_BLACK; + _color = (c != 0) ? SSD1306_WHITE : SSD1306_BLACK; display.setTextColor(_color); } diff --git a/src/helpers/ui/ST7789Display.cpp b/src/helpers/ui/ST7789Display.cpp index 6f877230..8f04f872 100644 --- a/src/helpers/ui/ST7789Display.cpp +++ b/src/helpers/ui/ST7789Display.cpp @@ -1,3 +1,5 @@ +#ifdef ST7789 + #include "ST7789Display.h" bool ST7789Display::i2c_probe(TwoWire& wire, uint8_t addr) { @@ -59,7 +61,32 @@ void ST7789Display::setTextSize(int sz) { } void ST7789Display::setColor(Color c) { - _color = (c == LIGHT) ? ST77XX_WHITE : ST77XX_BLACK; + switch (c) { + case DisplayDriver::DARK : + _color = ST77XX_BLACK; + break; + case DisplayDriver::LIGHT : + _color = ST77XX_WHITE; + break; + case DisplayDriver::RED : + _color = ST77XX_RED; + break; + case DisplayDriver::GREEN : + _color = ST77XX_GREEN; + break; + case DisplayDriver::BLUE : + _color = ST77XX_BLUE; + break; + case DisplayDriver::YELLOW : + _color = ST77XX_YELLOW; + break; + case DisplayDriver::ORANGE : + _color = ST77XX_ORANGE; + break; + default: + _color = ST77XX_WHITE; + break; + } display.setTextColor(_color); } @@ -80,9 +107,11 @@ void ST7789Display::drawRect(int x, int y, int w, int h) { } void ST7789Display::drawXbm(int x, int y, const uint8_t* bits, int w, int h) { - display.drawBitmap(x, y, bits, w, h, ST77XX_BLUE); + display.drawBitmap(x, y, bits, w, h, _color); } void ST7789Display::endFrame() { // display.display(); } + +#endif \ No newline at end of file diff --git a/src/helpers/ui/ST7789Display.h b/src/helpers/ui/ST7789Display.h index 0ddc7ae2..af319ef0 100644 --- a/src/helpers/ui/ST7789Display.h +++ b/src/helpers/ui/ST7789Display.h @@ -9,7 +9,7 @@ class ST7789Display : public DisplayDriver { Adafruit_ST7789 display; bool _isOn; - uint8_t _color; + uint16_t _color; bool i2c_probe(TwoWire& wire, uint8_t addr); public: diff --git a/variants/heltec_v2/platformio.ini b/variants/heltec_v2/platformio.ini index b8235906..bb1a8038 100644 --- a/variants/heltec_v2/platformio.ini +++ b/variants/heltec_v2/platformio.ini @@ -32,7 +32,7 @@ build_flags = ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v2.build_src_filter} +<../examples/simple_repeater> - + + + lib_deps = ${Heltec_lora32_v2.lib_deps} ${esp32_ota.lib_deps} @@ -50,7 +50,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v2.build_src_filter} - + + + +<../examples/simple_room_server> lib_deps = ${Heltec_lora32_v2.lib_deps} @@ -81,7 +81,7 @@ build_flags = ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v2.build_src_filter} + - + + + +<../examples/companion_radio> lib_deps = ${Heltec_lora32_v2.lib_deps} @@ -102,7 +102,7 @@ build_flags = ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v2.build_src_filter} + - + + + +<../examples/companion_radio> lib_deps = ${Heltec_lora32_v2.lib_deps} diff --git a/variants/heltec_v3/platformio.ini b/variants/heltec_v3/platformio.ini index 370ec8f2..49fa7434 100644 --- a/variants/heltec_v3/platformio.ini +++ b/variants/heltec_v3/platformio.ini @@ -34,7 +34,7 @@ build_flags = -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + + + +<../examples/simple_repeater> lib_deps = ${Heltec_lora32_v3.lib_deps} @@ -53,7 +53,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + + + +<../examples/simple_room_server> lib_deps = ${Heltec_lora32_v3.lib_deps} @@ -85,7 +85,7 @@ build_flags = ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + + + +<../examples/companion_radio> lib_deps = ${Heltec_lora32_v3.lib_deps} @@ -105,7 +105,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + + + + +<../examples/companion_radio> lib_deps = @@ -127,7 +127,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${Heltec_lora32_v3.build_src_filter} - + + + + +<../examples/companion_radio> lib_deps = diff --git a/variants/lilygo_t3s3/platformio.ini b/variants/lilygo_t3s3/platformio.ini index 43b8d16d..c857d51d 100644 --- a/variants/lilygo_t3s3/platformio.ini +++ b/variants/lilygo_t3s3/platformio.ini @@ -45,7 +45,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} - + + + +<../examples/simple_repeater> lib_deps = ${LilyGo_T3S3_sx1262.lib_deps} @@ -78,7 +78,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} - + + + +<../examples/simple_room_server> lib_deps = ${LilyGo_T3S3_sx1262.lib_deps} @@ -96,7 +96,7 @@ build_flags = ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} - + + + +<../examples/companion_radio> lib_deps = ${LilyGo_T3S3_sx1262.lib_deps} @@ -117,7 +117,7 @@ build_flags = ; -D MESH_DEBUG=1 build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} + - + + + +<../examples/companion_radio> lib_deps = ${LilyGo_T3S3_sx1262.lib_deps} diff --git a/variants/lilygo_tbeam/platformio.ini b/variants/lilygo_tbeam/platformio.ini index 01ab38e7..129d2d32 100644 --- a/variants/lilygo_tbeam/platformio.ini +++ b/variants/lilygo_tbeam/platformio.ini @@ -39,7 +39,7 @@ build_flags = ; -D MESH_DEBUG=1 build_src_filter = ${LilyGo_TBeam.build_src_filter} + - + + + +<../examples/companion_radio> lib_deps = ${LilyGo_TBeam.lib_deps} @@ -57,7 +57,7 @@ build_flags = -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${LilyGo_TBeam.build_src_filter} - + + + +<../examples/simple_repeater> lib_deps = ${LilyGo_TBeam.lib_deps} diff --git a/variants/lilygo_tlora_v2_1/platformio.ini b/variants/lilygo_tlora_v2_1/platformio.ini index da183b2b..078efc9c 100644 --- a/variants/lilygo_tlora_v2_1/platformio.ini +++ b/variants/lilygo_tlora_v2_1/platformio.ini @@ -34,7 +34,7 @@ lib_deps = [env:LilyGo_TLora_V2_1_1_6_Repeater] extends = LilyGo_TLora_V2_1_1_6 build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} - + + + +<../examples/simple_repeater> build_flags = ${LilyGo_TLora_V2_1_1_6.build_flags} @@ -58,7 +58,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} - + + + +<../examples/simple_repeater> lib_deps = ${LilyGo_TLora_V2_1_1_6.lib_deps} @@ -75,7 +75,7 @@ build_flags = ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} - + + + +<../examples/companion_radio> lib_deps = ${LilyGo_TLora_V2_1_1_6.lib_deps} @@ -95,7 +95,7 @@ build_flags = ; -D MESH_DEBUG=1 build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} + - + + + +<../examples/companion_radio> lib_deps = ${LilyGo_TLora_V2_1_1_6.lib_deps} @@ -104,7 +104,7 @@ lib_deps = [env:LilyGo_TLora_V2_1_1_6_room_server] extends = LilyGo_TLora_V2_1_1_6 build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} - + + + +<../examples/simple_room_server> build_flags = ${LilyGo_TLora_V2_1_1_6.build_flags} diff --git a/variants/rak4631/platformio.ini b/variants/rak4631/platformio.ini index 49955722..49319512 100644 --- a/variants/rak4631/platformio.ini +++ b/variants/rak4631/platformio.ini @@ -34,7 +34,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${rak4631.build_src_filter} - + + + +<../examples/simple_repeater> [env:RAK_4631_room_server] @@ -50,7 +50,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${rak4631.build_src_filter} - + + + +<../examples/simple_room_server> [env:RAK_4631_companion_radio_usb] @@ -65,7 +65,7 @@ build_flags = ; NOTE: DO NOT ENABLE --> -D MESH_PACKET_LOGGING=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 build_src_filter = ${rak4631.build_src_filter} - + + + +<../examples/companion_radio> lib_deps = ${rak4631.lib_deps} @@ -85,7 +85,7 @@ build_flags = ; -D MESH_PACKET_LOGGING=1 ; -D MESH_DEBUG=1 build_src_filter = ${rak4631.build_src_filter} - + + + + +<../examples/companion_radio> lib_deps = diff --git a/variants/t114/platformio.ini b/variants/t114/platformio.ini index d1be32e5..2abdfc69 100644 --- a/variants/t114/platformio.ini +++ b/variants/t114/platformio.ini @@ -60,9 +60,6 @@ build_flags = extends = Heltec_t114 build_flags = ${Heltec_t114.build_flags} - -I src/helpers/ui - -D ST7789 - -D DISPLAY_CLASS=ST7789Display -D MAX_CONTACTS=100 -D MAX_GROUP_CHANNELS=8 -D BLE_PIN_CODE=123456 @@ -74,11 +71,20 @@ build_flags = build_src_filter = ${Heltec_t114.build_src_filter} + +<../examples/companion_radio/main.cpp> - +<../examples/companion_radio/UITask.cpp> - + lib_deps = ${Heltec_t114.lib_deps} densaugeo/base64 @ ~1.4.0 + +[env:Heltec_t114_companion_radio_ble_screen] +extends = env:Heltec_t114_companion_radio_ble +build_flags = ${env:Heltec_t114_companion_radio_ble.build_flags} + -I src/helpers/ui + -D ST7789 + -D DISPLAY_CLASS=ST7789Display +build_src_filter = ${env:Heltec_t114_companion_radio_ble.build_src_filter} + +<../examples/companion_radio/UITask.cpp> + + +lib_deps = ${env:Heltec_t114_companion_radio_ble.lib_deps} adafruit/Adafruit ST7735 and ST7789 Library @ ^1.11.0 [env:Heltec_t114_companion_radio_usb]