T1000eBoard.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. digitalWrite(GPS_EN, LOW);
  50. pinMode(GPS_RESETB, OUTPUT);
  51. digitalWrite(GPS_RESETB, LOW);
  52. #endif
  53. #ifdef BUZZER_EN
  54. digitalWrite(BUZZER_EN, LOW);
  55. #endif
  56. #ifdef PIN_3V3_EN
  57. digitalWrite(PIN_3V3_EN, LOW);
  58. #endif
  59. #ifdef PIN_3V3_ACC_EN
  60. digitalWrite(PIN_3V3_ACC_EN, LOW);
  61. #endif
  62. #ifdef SENSOR_EN
  63. digitalWrite(SENSOR_EN, LOW);
  64. #endif
  65. // set led on and wait for button release before poweroff
  66. #ifdef LED_PIN
  67. digitalWrite(LED_PIN, HIGH);
  68. #endif
  69. #ifdef BUTTON_PIN
  70. while(digitalRead(BUTTON_PIN));
  71. #endif
  72. #ifdef LED_PIN
  73. digitalWrite(LED_PIN, LOW);
  74. #endif
  75. #ifdef BUTTON_PIN
  76. nrf_gpio_cfg_sense_input(BUTTON_PIN, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_HIGH);
  77. #endif
  78. sd_power_system_off();
  79. }
  80. void reboot() override {
  81. NVIC_SystemReset();
  82. }
  83. // bool startOTAUpdate(const char* id, char reply[]) override;
  84. };