XiaoNrf52Board.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #pragma once
  2. #include <MeshCore.h>
  3. #include <Arduino.h>
  4. #include <helpers/NRF52Board.h>
  5. #ifndef USER_BTN_PRESSED
  6. #define USER_BTN_PRESSED LOW
  7. #endif
  8. #ifdef XIAO_NRF52
  9. class XiaoNrf52Board : public NRF52BoardDCDC {
  10. protected:
  11. #if NRF52_POWER_MANAGEMENT
  12. void initiateShutdown(uint8_t reason) override;
  13. #endif
  14. public:
  15. XiaoNrf52Board() : NRF52Board("XIAO_NRF52_OTA") {}
  16. void begin();
  17. #if defined(P_LORA_TX_LED)
  18. void onBeforeTransmit() override {
  19. digitalWrite(P_LORA_TX_LED, LOW); // turn TX LED on
  20. }
  21. void onAfterTransmit() override {
  22. digitalWrite(P_LORA_TX_LED, HIGH); // turn TX LED off
  23. }
  24. #endif
  25. uint16_t getBattMilliVolts() override;
  26. const char* getManufacturerName() const override {
  27. return "Seeed Xiao-nrf52";
  28. }
  29. void powerOff() override {
  30. // set led on and wait for button release before poweroff
  31. digitalWrite(PIN_LED, LOW);
  32. #ifdef PIN_USER_BTN
  33. while(digitalRead(PIN_USER_BTN) == USER_BTN_PRESSED);
  34. #endif
  35. digitalWrite(LED_GREEN, HIGH);
  36. digitalWrite(LED_BLUE, HIGH);
  37. digitalWrite(PIN_LED, HIGH);
  38. #ifdef PIN_USER_BTN
  39. // configure button press to wake up when in powered off state
  40. nrf_gpio_cfg_sense_input(digitalPinToInterrupt(g_ADigitalPinMap[PIN_USER_BTN]), NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_LOW);
  41. #endif
  42. sd_power_system_off();
  43. }
  44. };
  45. #endif