diff --git a/src/helpers/nrf52/T1000eBoard.h b/src/helpers/nrf52/T1000eBoard.h index 58e3b774..4253e96b 100644 --- a/src/helpers/nrf52/T1000eBoard.h +++ b/src/helpers/nrf52/T1000eBoard.h @@ -3,6 +3,8 @@ #include #include +#define HAS_T1000e_POWEROFF + // LoRa and SPI pins #define P_LORA_DIO_1 (32 + 1) // P1.1 #define P_LORA_NSS (0 + 12) // P0.12 @@ -23,12 +25,29 @@ class T1000eBoard : public mesh::MainBoard { protected: uint8_t startup_reason; + uint8_t btn_prev_state; public: + void begin() { + // for future use, sub-classes SHOULD call this from their begin() + startup_reason = BD_STARTUP_NORMAL; + btn_prev_state = HIGH; + + pinMode(BATTERY_PIN, INPUT); + pinMode(BUTTON_PIN, INPUT); + pinMode(LED_PIN, OUTPUT); + +// Doesn't seem to be a pwr en pin ... +// pinMode(LR1110_POWER_EN, OUTPUT); +// digitalWrite(LR1110_POWER_EN, HIGH); + delay(10); // give sx1262 some time to power up + } void begin(); uint16_t getBattMilliVolts() override { - return 0; + analogReadResolution(12); + float volts = (analogRead(BATTERY_PIN) * ADC_MULTIPLIER * AREF_VOLTAGE) / 4096; + return volts * 1000; } uint8_t getStartupReason() const override { return startup_reason; } @@ -37,9 +56,41 @@ public: return "Seeed Tracker T1000-e"; } + int buttonStateChanged() { + uint8_t v = digitalRead(BUTTON_PIN); + if (v != btn_prev_state) { + btn_prev_state = v; + return (v == LOW) ? 1 : -1; + } + return 0; + } + + void powerOff() { + #ifdef GNSS_AIROHA + digitalWrite(GPS_VRTC_EN, LOW); + digitalWrite(PIN_GPS_RESET, LOW); + digitalWrite(GPS_SLEEP_INT, LOW); + digitalWrite(GPS_RTC_INT, LOW); + pinMode(GPS_RESETB_OUT, OUTPUT); + digitalWrite(GPS_RESETB_OUT, LOW); + #endif + + #ifdef BUZZER_EN_PIN + digitalWrite(BUZZER_EN_PIN, LOW); + #endif + + #ifdef PIN_3V3_EN + digitalWrite(PIN_3V3_EN, LOW); + #endif + + digitalWrite(LED_PIN, LOW); + nrf_gpio_cfg_sense_input(digitalPinToInterrupt(BUTTON_PIN), NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_HIGH); + sd_power_system_off(); + } + void reboot() override { NVIC_SystemReset(); } // bool startOTAUpdate() override; -}; +}; \ No newline at end of file