| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #include "TBeam1WBoard.h"
- void TBeam1WBoard::begin() {
- ESP32Board::begin();
- // Power on radio module (must be done before radio init)
- pinMode(SX126X_POWER_EN, OUTPUT);
- digitalWrite(SX126X_POWER_EN, HIGH);
- radio_powered = true;
- delay(10); // Allow radio to power up
- // RF switch RXEN pin handled by RadioLib via setRfSwitchPins()
- // Initialize LED
- pinMode(LED_PIN, OUTPUT);
- digitalWrite(LED_PIN, LOW);
- // Initialize fan control (on by default - 1W PA can overheat)
- pinMode(FAN_CTRL_PIN, OUTPUT);
- digitalWrite(FAN_CTRL_PIN, HIGH);
- }
- void TBeam1WBoard::onBeforeTransmit() {
- // RF switching handled by RadioLib via SX126X_DIO2_AS_RF_SWITCH and setRfSwitchPins()
- digitalWrite(LED_PIN, HIGH); // TX LED on
- }
- void TBeam1WBoard::onAfterTransmit() {
- digitalWrite(LED_PIN, LOW); // TX LED off
- }
- uint16_t TBeam1WBoard::getBattMilliVolts() {
- // T-Beam 1W uses 7.4V battery with voltage divider
- // ADC reads through divider - adjust multiplier based on actual divider ratio
- analogReadResolution(12);
- uint32_t raw = 0;
- for (int i = 0; i < 8; i++) {
- raw += analogRead(BATTERY_PIN);
- }
- raw = raw / 8;
- // Assuming voltage divider ratio from ADC_MULTIPLIER
- // 3.3V reference, 12-bit ADC (4095 max)
- return static_cast<uint16_t>((raw * 3300 * ADC_MULTIPLIER) / 4095);
- }
- const char* TBeam1WBoard::getManufacturerName() const {
- return "LilyGo T-Beam 1W";
- }
- void TBeam1WBoard::powerOff() {
- // Turn off radio LNA (CTRL pin must be LOW when not receiving)
- digitalWrite(SX126X_RXEN, LOW);
- // Turn off radio power
- digitalWrite(SX126X_POWER_EN, LOW);
- radio_powered = false;
- // Turn off LED and fan
- digitalWrite(LED_PIN, LOW);
- digitalWrite(FAN_CTRL_PIN, LOW);
- ESP32Board::powerOff();
- }
- void TBeam1WBoard::setFanEnabled(bool enabled) {
- digitalWrite(FAN_CTRL_PIN, enabled ? HIGH : LOW);
- }
- bool TBeam1WBoard::isFanEnabled() const {
- return digitalRead(FAN_CTRL_PIN) == HIGH;
- }
|