firmware/variants/nrf52840/t-echo/TEchoBacklight.h
Michael Overhorst 9b2fff2f70 Add TEchoBacklight support for T-Echo variant
Introduces TEchoBacklight class to manage the backlight on the T-Echo device (BaseUI only)
2025-08-20 22:46:36 +02:00

44 lines
1.0 KiB
C++

#pragma once
#include "configuration.h"
#if defined(TTGO_T_ECHO) && !defined(MESHTASTIC_INCLUDE_NICHE_GRAPHICS)
#include "concurrency/OSThread.h"
class TEchoBacklight : public concurrency::OSThread
{
public:
TEchoBacklight();
int32_t runOnce() override;
void setPin(uint8_t pin);
void start();
void peek();
void latch();
void off();
private:
static constexpr uint32_t LATCH_TIME_MS = 5000;
static constexpr uint32_t POLL_INTERVAL_MS = 10;
static constexpr uint32_t DEBOUNCE_MS = 50;
static constexpr uint32_t BLINK_DELAY_MS = 25;
static constexpr uint8_t BLINK_STEPS = 3;
enum State { REST, IRQ, POLLING_UNFIRED, POLLING_FIRED, BLINKING };
bool backlightLatched = false;
uint32_t irqAtMillis = 0;
State state = REST;
uint32_t blinkStartTime = 0;
uint8_t blinkStep = 0;
void setBacklight(bool on);
bool isTouchPressed();
static void touchISR();
void startThread();
void stopThread();
};
extern TEchoBacklight *tEchoBacklight;
#endif