ui : manage colors and ensure fw using ssd1306 still compile

This commit is contained in:
Florent
2025-04-11 22:23:47 +02:00
parent 7534c5143f
commit cf3d55201f
12 changed files with 77 additions and 34 deletions

View File

@@ -89,22 +89,29 @@ void UITask::renderCurrScreen() {
// render message preview // render message preview
_display->setCursor(0, 0); _display->setCursor(0, 0);
_display->setTextSize(1); _display->setTextSize(1);
_display->setColor(DisplayDriver::GREEN);
_display->print(_node_name); _display->print(_node_name);
_display->setCursor(0, 12); _display->setCursor(0, 12);
_display->setColor(DisplayDriver::YELLOW);
_display->print(_origin); _display->print(_origin);
_display->setCursor(0, 24); _display->setCursor(0, 24);
_display->setColor(DisplayDriver::LIGHT);
_display->print(_msg); _display->print(_msg);
_display->setCursor(100, 9); _display->setCursor(100, 9);
_display->setTextSize(2); _display->setTextSize(2);
_display->setColor(DisplayDriver::ORANGE);
sprintf(tmp, "%d", _msgcount); sprintf(tmp, "%d", _msgcount);
_display->print(tmp); _display->print(tmp);
} else { } else {
// render 'home' screen // render 'home' screen
_display->setColor(DisplayDriver::BLUE);
_display->drawXbm(0, 0, meshcore_logo, 128, 13); _display->drawXbm(0, 0, meshcore_logo, 128, 13);
_display->setCursor(0, 20); _display->setCursor(0, 20);
_display->setTextSize(1); _display->setTextSize(1);
_display->setColor(DisplayDriver::LIGHT);
_display->print(_node_name); _display->print(_node_name);
_display->setCursor(0, 32); _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("freq : %03.2f sf %d\n", _prefs.freq, _prefs.sf);
//_display->printf("bw : %03.2f cr %d\n", _prefs.bw, _prefs.cr); //_display->printf("bw : %03.2f cr %d\n", _prefs.bw, _prefs.cr);
} else if (_pin_code != 0) { } else if (_pin_code != 0) {
_display->setColor(DisplayDriver::RED);
_display->setTextSize(2); _display->setTextSize(2);
_display->setCursor(0, 43); _display->setCursor(0, 43);
sprintf(tmp, "Pin:%d", _pin_code); sprintf(tmp, "Pin:%d", _pin_code);

View File

@@ -7,7 +7,7 @@ class DisplayDriver {
protected: protected:
DisplayDriver(int w, int h) { _w = w; _h = h; } DisplayDriver(int w, int h) { _w = w; _h = h; }
public: 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 width() const { return _w; }
int height() const { return _h; } int height() const { return _h; }

View File

@@ -38,7 +38,7 @@ void SSD1306Display::setTextSize(int sz) {
} }
void SSD1306Display::setColor(Color c) { void SSD1306Display::setColor(Color c) {
_color = (c == LIGHT) ? SSD1306_WHITE : SSD1306_BLACK; _color = (c != 0) ? SSD1306_WHITE : SSD1306_BLACK;
display.setTextColor(_color); display.setTextColor(_color);
} }

View File

@@ -1,3 +1,5 @@
#ifdef ST7789
#include "ST7789Display.h" #include "ST7789Display.h"
bool ST7789Display::i2c_probe(TwoWire& wire, uint8_t addr) { bool ST7789Display::i2c_probe(TwoWire& wire, uint8_t addr) {
@@ -59,7 +61,32 @@ void ST7789Display::setTextSize(int sz) {
} }
void ST7789Display::setColor(Color c) { 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); 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) { 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() { void ST7789Display::endFrame() {
// display.display(); // display.display();
} }
#endif

View File

@@ -9,7 +9,7 @@
class ST7789Display : public DisplayDriver { class ST7789Display : public DisplayDriver {
Adafruit_ST7789 display; Adafruit_ST7789 display;
bool _isOn; bool _isOn;
uint8_t _color; uint16_t _color;
bool i2c_probe(TwoWire& wire, uint8_t addr); bool i2c_probe(TwoWire& wire, uint8_t addr);
public: public:

View File

@@ -32,7 +32,7 @@ build_flags =
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${Heltec_lora32_v2.build_src_filter} build_src_filter = ${Heltec_lora32_v2.build_src_filter}
+<../examples/simple_repeater> +<../examples/simple_repeater>
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
lib_deps = lib_deps =
${Heltec_lora32_v2.lib_deps} ${Heltec_lora32_v2.lib_deps}
${esp32_ota.lib_deps} ${esp32_ota.lib_deps}
@@ -50,7 +50,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${Heltec_lora32_v2.build_src_filter} build_src_filter = ${Heltec_lora32_v2.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_room_server> +<../examples/simple_room_server>
lib_deps = lib_deps =
${Heltec_lora32_v2.lib_deps} ${Heltec_lora32_v2.lib_deps}
@@ -81,7 +81,7 @@ build_flags =
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
build_src_filter = ${Heltec_lora32_v2.build_src_filter} build_src_filter = ${Heltec_lora32_v2.build_src_filter}
+<helpers/esp32/*.cpp> +<helpers/esp32/*.cpp>
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
${Heltec_lora32_v2.lib_deps} ${Heltec_lora32_v2.lib_deps}
@@ -102,7 +102,7 @@ build_flags =
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${Heltec_lora32_v2.build_src_filter} build_src_filter = ${Heltec_lora32_v2.build_src_filter}
+<helpers/esp32/*.cpp> +<helpers/esp32/*.cpp>
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
${Heltec_lora32_v2.lib_deps} ${Heltec_lora32_v2.lib_deps}

View File

@@ -34,7 +34,7 @@ build_flags =
-D MESH_PACKET_LOGGING=1 -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${Heltec_lora32_v3.build_src_filter} build_src_filter = ${Heltec_lora32_v3.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_repeater> +<../examples/simple_repeater>
lib_deps = lib_deps =
${Heltec_lora32_v3.lib_deps} ${Heltec_lora32_v3.lib_deps}
@@ -53,7 +53,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${Heltec_lora32_v3.build_src_filter} build_src_filter = ${Heltec_lora32_v3.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_room_server> +<../examples/simple_room_server>
lib_deps = lib_deps =
${Heltec_lora32_v3.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_PACKET_LOGGING=1
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
build_src_filter = ${Heltec_lora32_v3.build_src_filter} build_src_filter = ${Heltec_lora32_v3.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
${Heltec_lora32_v3.lib_deps} ${Heltec_lora32_v3.lib_deps}
@@ -105,7 +105,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${Heltec_lora32_v3.build_src_filter} build_src_filter = ${Heltec_lora32_v3.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<helpers/esp32/*.cpp> +<helpers/esp32/*.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
@@ -127,7 +127,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${Heltec_lora32_v3.build_src_filter} build_src_filter = ${Heltec_lora32_v3.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<helpers/esp32/*.cpp> +<helpers/esp32/*.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =

View File

@@ -45,7 +45,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_repeater> +<../examples/simple_repeater>
lib_deps = lib_deps =
${LilyGo_T3S3_sx1262.lib_deps} ${LilyGo_T3S3_sx1262.lib_deps}
@@ -78,7 +78,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_room_server> +<../examples/simple_room_server>
lib_deps = lib_deps =
${LilyGo_T3S3_sx1262.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_PACKET_LOGGING=1
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
${LilyGo_T3S3_sx1262.lib_deps} ${LilyGo_T3S3_sx1262.lib_deps}
@@ -117,7 +117,7 @@ build_flags =
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter} build_src_filter = ${LilyGo_T3S3_sx1262.build_src_filter}
+<helpers/esp32/*.cpp> +<helpers/esp32/*.cpp>
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
${LilyGo_T3S3_sx1262.lib_deps} ${LilyGo_T3S3_sx1262.lib_deps}

View File

@@ -39,7 +39,7 @@ build_flags =
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${LilyGo_TBeam.build_src_filter} build_src_filter = ${LilyGo_TBeam.build_src_filter}
+<helpers/esp32/*.cpp> +<helpers/esp32/*.cpp>
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
${LilyGo_TBeam.lib_deps} ${LilyGo_TBeam.lib_deps}
@@ -57,7 +57,7 @@ build_flags =
-D MESH_PACKET_LOGGING=1 -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${LilyGo_TBeam.build_src_filter} build_src_filter = ${LilyGo_TBeam.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_repeater> +<../examples/simple_repeater>
lib_deps = lib_deps =
${LilyGo_TBeam.lib_deps} ${LilyGo_TBeam.lib_deps}

View File

@@ -34,7 +34,7 @@ lib_deps =
[env:LilyGo_TLora_V2_1_1_6_Repeater] [env:LilyGo_TLora_V2_1_1_6_Repeater]
extends = LilyGo_TLora_V2_1_1_6 extends = LilyGo_TLora_V2_1_1_6
build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_repeater> +<../examples/simple_repeater>
build_flags = build_flags =
${LilyGo_TLora_V2_1_1_6.build_flags} ${LilyGo_TLora_V2_1_1_6.build_flags}
@@ -58,7 +58,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_repeater> +<../examples/simple_repeater>
lib_deps = lib_deps =
${LilyGo_TLora_V2_1_1_6.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_PACKET_LOGGING=1
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
${LilyGo_TLora_V2_1_1_6.lib_deps} ${LilyGo_TLora_V2_1_1_6.lib_deps}
@@ -95,7 +95,7 @@ build_flags =
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter}
+<helpers/esp32/*.cpp> +<helpers/esp32/*.cpp>
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
${LilyGo_TLora_V2_1_1_6.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] [env:LilyGo_TLora_V2_1_1_6_room_server]
extends = LilyGo_TLora_V2_1_1_6 extends = LilyGo_TLora_V2_1_1_6
build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter} build_src_filter = ${LilyGo_TLora_V2_1_1_6.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_room_server> +<../examples/simple_room_server>
build_flags = build_flags =
${LilyGo_TLora_V2_1_1_6.build_flags} ${LilyGo_TLora_V2_1_1_6.build_flags}

View File

@@ -34,7 +34,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${rak4631.build_src_filter} build_src_filter = ${rak4631.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_repeater> +<../examples/simple_repeater>
[env:RAK_4631_room_server] [env:RAK_4631_room_server]
@@ -50,7 +50,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${rak4631.build_src_filter} build_src_filter = ${rak4631.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/simple_room_server> +<../examples/simple_room_server>
[env:RAK_4631_companion_radio_usb] [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_PACKET_LOGGING=1
; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1 ; NOTE: DO NOT ENABLE --> -D MESH_DEBUG=1
build_src_filter = ${rak4631.build_src_filter} build_src_filter = ${rak4631.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =
${rak4631.lib_deps} ${rak4631.lib_deps}
@@ -85,7 +85,7 @@ build_flags =
; -D MESH_PACKET_LOGGING=1 ; -D MESH_PACKET_LOGGING=1
; -D MESH_DEBUG=1 ; -D MESH_DEBUG=1
build_src_filter = ${rak4631.build_src_filter} build_src_filter = ${rak4631.build_src_filter}
+<helpers/ui/*.cpp> +<helpers/ui/SSD1306Display.cpp>
+<helpers/nrf52/*.cpp> +<helpers/nrf52/*.cpp>
+<../examples/companion_radio> +<../examples/companion_radio>
lib_deps = lib_deps =

View File

@@ -60,9 +60,6 @@ build_flags =
extends = Heltec_t114 extends = Heltec_t114
build_flags = build_flags =
${Heltec_t114.build_flags} ${Heltec_t114.build_flags}
-I src/helpers/ui
-D ST7789
-D DISPLAY_CLASS=ST7789Display
-D MAX_CONTACTS=100 -D MAX_CONTACTS=100
-D MAX_GROUP_CHANNELS=8 -D MAX_GROUP_CHANNELS=8
-D BLE_PIN_CODE=123456 -D BLE_PIN_CODE=123456
@@ -74,11 +71,20 @@ build_flags =
build_src_filter = ${Heltec_t114.build_src_filter} build_src_filter = ${Heltec_t114.build_src_filter}
+<helpers/nrf52/*.cpp> +<helpers/nrf52/*.cpp>
+<../examples/companion_radio/main.cpp> +<../examples/companion_radio/main.cpp>
+<../examples/companion_radio/UITask.cpp>
+<helpers/ui/ST7789Display.cpp>
lib_deps = lib_deps =
${Heltec_t114.lib_deps} ${Heltec_t114.lib_deps}
densaugeo/base64 @ ~1.4.0 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>
+<helpers/ui/ST7789Display.cpp>
lib_deps = ${env:Heltec_t114_companion_radio_ble.lib_deps}
adafruit/Adafruit ST7735 and ST7789 Library @ ^1.11.0 adafruit/Adafruit ST7735 and ST7789 Library @ ^1.11.0
[env:Heltec_t114_companion_radio_usb] [env:Heltec_t114_companion_radio_usb]