From 9f683975c1428886312e55479a67af7ad0242585 Mon Sep 17 00:00:00 2001 From: taco Date: Sun, 10 May 2026 03:08:08 +1000 Subject: [PATCH] add torch --- examples/companion_radio/ui-tiny/UITask.cpp | 9 +++++++++ variants/lilygo_techo_card/TechoCardBoard.cpp | 12 ++++++++++++ variants/lilygo_techo_card/TechoCardBoard.h | 2 ++ variants/lilygo_techo_card/platformio.ini | 3 ++- variants/lilygo_techo_card/target.cpp | 1 + variants/lilygo_techo_card/target.h | 1 + 6 files changed, 27 insertions(+), 1 deletion(-) diff --git a/examples/companion_radio/ui-tiny/UITask.cpp b/examples/companion_radio/ui-tiny/UITask.cpp index 1cc15569f..6d332b2d1 100644 --- a/examples/companion_radio/ui-tiny/UITask.cpp +++ b/examples/companion_radio/ui-tiny/UITask.cpp @@ -643,6 +643,15 @@ void UITask::loop() { next_backlight_btn_check = millis() + 300; } #endif +#if defined(HAS_TORCH) + ev = back_btn.check(); + if (ev == BUTTON_EVENT_CLICK && c == 0) { + c = checkDisplayOn(KEY_PREV); + } else if (ev == BUTTON_EVENT_DOUBLE_CLICK) { + board.toggleTorch(); + c = 0; + } +#endif if (c != 0 && curr) { curr->handleInput(c); diff --git a/variants/lilygo_techo_card/TechoCardBoard.cpp b/variants/lilygo_techo_card/TechoCardBoard.cpp index 8d00540e0..12a259bbf 100644 --- a/variants/lilygo_techo_card/TechoCardBoard.cpp +++ b/variants/lilygo_techo_card/TechoCardBoard.cpp @@ -67,6 +67,18 @@ void TechoCardBoard::onAfterTransmit() { Led_A.show(); } +void TechoCardBoard::toggleTorch() { + if (!_torchStatus) { + Led_C.setPixelColor(0, 255, 255, 255); + Led_C.show(); + _torchStatus = true; + } else { + Led_C.setPixelColor(0, 0, 0, 0); + Led_C.show(); + _torchStatus = false; + } +} + void TechoCardBoard::turnOffLeds() { for (uint8_t i = 0; i < sizeof(Led) / sizeof(*Led); i++) { diff --git a/variants/lilygo_techo_card/TechoCardBoard.h b/variants/lilygo_techo_card/TechoCardBoard.h index 19bd6d16f..d0887d004 100644 --- a/variants/lilygo_techo_card/TechoCardBoard.h +++ b/variants/lilygo_techo_card/TechoCardBoard.h @@ -15,6 +15,7 @@ #define REAL_VBAT_MV_PER_LSB (VBAT_DIVIDER_COMP * VBAT_MV_PER_LSB) class TechoCardBoard : public NRF52BoardDCDC { + bool _torchStatus = false; public: TechoCardBoard() : NRF52Board("TECHO_OTA") {} void begin(); @@ -29,6 +30,7 @@ public: void powerOff() override; + void toggleTorch(); void turnOffLeds(); }; diff --git a/variants/lilygo_techo_card/platformio.ini b/variants/lilygo_techo_card/platformio.ini index 515b6c9c1..7bb84f15f 100644 --- a/variants/lilygo_techo_card/platformio.ini +++ b/variants/lilygo_techo_card/platformio.ini @@ -14,6 +14,7 @@ build_flags = ${nrf52_base.build_flags} -D SX126X_CURRENT_LIMIT=140 -D SX126X_RX_BOOSTED_GAIN=1 -D HAS_NEOPIXEL=1 + -D HAS_TORCH=1 ; -D DISABLE_DIAGNOSTIC_OUTPUT -D ENV_INCLUDE_GPS=1 -D DISPLAY_CLASS=U8g2Display @@ -79,7 +80,7 @@ build_flags = -D UI_RECENT_LIST_SIZE=3 -D UI_GPS_PAGE=1 ; -D MESH_PACKET_LOGGING=1 - ; -D MESH_DEBUG=1 + -D MESH_DEBUG=1 -D AUTO_SHUTDOWN_MILLIVOLTS=3300 build_src_filter = ${LilyGo_T-Echo_Card.build_src_filter} + diff --git a/variants/lilygo_techo_card/target.cpp b/variants/lilygo_techo_card/target.cpp index 63686b76f..ed37698d9 100644 --- a/variants/lilygo_techo_card/target.cpp +++ b/variants/lilygo_techo_card/target.cpp @@ -23,6 +23,7 @@ EnvironmentSensorManager sensors = EnvironmentSensorManager(); #ifdef DISPLAY_CLASS DISPLAY_CLASS display; MomentaryButton user_btn(PIN_USER_BTN, 1000, true); + MomentaryButton back_btn(PIN_BUTTON2, 1000, true); #endif bool radio_init() { diff --git a/variants/lilygo_techo_card/target.h b/variants/lilygo_techo_card/target.h index e44e45377..6245e3ffb 100644 --- a/variants/lilygo_techo_card/target.h +++ b/variants/lilygo_techo_card/target.h @@ -22,6 +22,7 @@ extern EnvironmentSensorManager sensors; #ifdef DISPLAY_CLASS extern DISPLAY_CLASS display; extern MomentaryButton user_btn; + extern MomentaryButton back_btn; #endif bool radio_init();