T1000eBoard.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #pragma once
  2. #include <MeshCore.h>
  3. #include <Arduino.h>
  4. class T1000eBoard : public mesh::MainBoard {
  5. protected:
  6. uint8_t startup_reason;
  7. uint8_t btn_prev_state;
  8. public:
  9. void begin();
  10. uint16_t getBattMilliVolts() override {
  11. #ifdef BATTERY_PIN
  12. #ifdef PIN_3V3_EN
  13. digitalWrite(PIN_3V3_EN, HIGH);
  14. #endif
  15. analogReference(AR_INTERNAL_3_0);
  16. analogReadResolution(12);
  17. delay(10);
  18. float volts = (analogRead(BATTERY_PIN) * ADC_MULTIPLIER * AREF_VOLTAGE) / 4096;
  19. #ifdef PIN_3V3_EN
  20. digitalWrite(PIN_3V3_EN, LOW);
  21. #endif
  22. analogReference(AR_DEFAULT); // put back to default
  23. analogReadResolution(10);
  24. return volts * 1000;
  25. #else
  26. return 0;
  27. #endif
  28. }
  29. uint8_t getStartupReason() const override { return startup_reason; }
  30. const char* getManufacturerName() const override {
  31. return "Seeed Tracker T1000-e";
  32. }
  33. int buttonStateChanged() {
  34. #ifdef BUTTON_PIN
  35. uint8_t v = digitalRead(BUTTON_PIN);
  36. if (v != btn_prev_state) {
  37. btn_prev_state = v;
  38. return (v == LOW) ? 1 : -1;
  39. }
  40. #endif
  41. return 0;
  42. }
  43. void powerOff() override {
  44. #ifdef HAS_GPS
  45. digitalWrite(GPS_VRTC_EN, LOW);
  46. digitalWrite(GPS_RESET, LOW);
  47. digitalWrite(GPS_SLEEP_INT, LOW);
  48. digitalWrite(GPS_RTC_INT, LOW);
  49. pinMode(GPS_RESETB, OUTPUT);
  50. digitalWrite(GPS_RESETB, LOW);
  51. #endif
  52. #ifdef BUZZER_EN
  53. digitalWrite(BUZZER_EN, LOW);
  54. #endif
  55. #ifdef PIN_3V3_EN
  56. digitalWrite(PIN_3V3_EN, LOW);
  57. #endif
  58. // set led on and wait for button release before poweroff
  59. #ifdef LED_PIN
  60. digitalWrite(LED_PIN, HIGH);
  61. #endif
  62. #ifdef BUTTON_PIN
  63. while(digitalRead(BUTTON_PIN));
  64. #endif
  65. #ifdef LED_PIN
  66. digitalWrite(LED_PIN, LOW);
  67. #endif
  68. #ifdef BUTTON_PIN
  69. nrf_gpio_cfg_sense_input(digitalPinToInterrupt(BUTTON_PIN), NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_HIGH);
  70. #endif
  71. sd_power_system_off();
  72. }
  73. void reboot() override {
  74. NVIC_SystemReset();
  75. }
  76. // bool startOTAUpdate(const char* id, char reply[]) override;
  77. };