#pragma once #include #include #include #define ADC_FACTOR ((1000.0*ADC_MULTIPLIER*AREF_VOLTAGE)/ADC_MAX) class ThinkNodeM3Board : public NRF52BoardDCDC { protected: #if NRF52_POWER_MANAGEMENT void initiateShutdown(uint8_t reason) override; #endif uint8_t btn_prev_state; public: ThinkNodeM3Board() : NRF52Board("THINKNODE_M3_OTA") {} void begin(); uint16_t getBattMilliVolts() override; #if defined(P_LORA_TX_LED) void onBeforeTransmit() override { digitalWrite(P_LORA_TX_LED, HIGH); // turn TX LED on } void onAfterTransmit() override { digitalWrite(P_LORA_TX_LED, LOW); // turn TX LED off } #endif const char* getManufacturerName() const override { return "Elecrow ThinkNode M3"; } int buttonStateChanged() { #ifdef BUTTON_PIN uint8_t v = digitalRead(BUTTON_PIN); if (v != btn_prev_state) { btn_prev_state = v; return (v == LOW) ? 1 : -1; } #endif return 0; } void powerOff() override { // turn off all leds, sd_power_system_off will not do this for us #ifdef P_LORA_TX_LED digitalWrite(P_LORA_TX_LED, LOW); #endif // power off board sd_power_system_off(); } };