Browse Source

Merge pull request #7 from Quency-D/dev

merge Dev
Quency-D 11 months ago
parent
commit
88fbb41016
3 changed files with 18 additions and 96 deletions
  1. 8 0
      variants/techo/platformio.ini
  2. 8 78
      variants/techo/target.cpp
  3. 2 18
      variants/techo/target.h

+ 8 - 0
variants/techo/platformio.ini

@@ -22,13 +22,21 @@ build_flags = ${nrf52840_techo.build_flags}
   -D SX126X_CURRENT_LIMIT=140
   -D SX126X_RX_BOOSTED_GAIN=1
   -D P_LORA_TX_LED=LED_GREEN
+  -D DISABLE_DIAGNOSTIC_OUTPUT
+  -D ENV_INCLUDE_GPS=1
+  -D ENV_INCLUDE_BME280=1
+  -D GPS_BAUD_RATE=9600
+  -D PIN_GPS_EN=GPS_EN
+  -D TELEM_BME280_ADDRESS=0x77
 build_src_filter = ${nrf52840_techo.build_src_filter}
   +<helpers/*.cpp>
   +<helpers/nrf52/TechoBoard.cpp>
+  +<helpers/sensors/EnvironmentSensorManager.cpp>
   +<../variants/techo>
 lib_deps =
   ${nrf52840_techo.lib_deps}
   stevemarple/MicroNMEA @ ^2.0.6
+  adafruit/Adafruit BME280 Library @ ^2.3.0
 debug_tool = jlink
 upload_protocol = nrfutil
 

+ 8 - 78
variants/techo/target.cpp

@@ -11,8 +11,14 @@ WRAPPER_CLASS radio_driver(radio, board);
 
 VolatileRTCClock fallback_clock;
 AutoDiscoverRTCClock rtc_clock(fallback_clock);
-MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1);
-TechoSensorManager sensors = TechoSensorManager(nmea);
+
+#ifdef ENV_INCLUDE_GPS
+MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock);
+EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea);
+#else
+EnvironmentSensorManager sensors = EnvironmentSensorManager();
+#endif
+
 
 #ifdef DISPLAY_CLASS
   DISPLAY_CLASS display;
@@ -45,79 +51,3 @@ mesh::LocalIdentity radio_new_identity() {
   return mesh::LocalIdentity(&rng);  // create new random identity
 }
 
-void TechoSensorManager::start_gps() {
-  if (!gps_active) {
-    gps_active = true;
-    _location->begin();
-  }
-}
-
-void TechoSensorManager::stop_gps() {
-  if (gps_active) {
-    gps_active = false;
-    _location->stop();
-  }
-}
-
-bool TechoSensorManager::begin() {
-  Serial1.begin(9600);
-
-  // GPS enabled pin
-  pinMode(GPS_EN, OUTPUT);
-  
-  return true;
-}
-
-bool TechoSensorManager::querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) {
-  if (requester_permissions & TELEM_PERM_LOCATION) {   // does requester have permission?
-    telemetry.addGPS(TELEM_CHANNEL_SELF, node_lat, node_lon, node_altitude);
-  }
-  return true;
-}
-
-void TechoSensorManager::loop() {
-  static long next_gps_update = 0;
-  
-  if (!gps_active) {
-    return;  // GPS is not active, skip further processing
-  }
-
-  _location->loop();
-
-  if (millis() > next_gps_update) {
-    if (_location->isValid()) {
-      node_lat = ((double)_location->getLatitude())/1000000.;
-      node_lon = ((double)_location->getLongitude())/1000000.;
-      node_altitude = ((double)_location->getAltitude()) / 1000.0;
-      MESH_DEBUG_PRINTLN("lat %f lon %f", node_lat, node_lon);
-    }
-    next_gps_update = millis() + 1000;
-  }
-}
-
-int TechoSensorManager::getNumSettings() const {
-  return 1;  // always show GPS setting
-}
-
-const char* TechoSensorManager::getSettingName(int i) const {
-  return (i == 0) ? "gps" : NULL;
-}
-
-const char* TechoSensorManager::getSettingValue(int i) const {
-  if (i == 0) {
-    return gps_active ? "1" : "0";
-  }
-  return NULL;
-}
-
-bool TechoSensorManager::setSettingValue(const char* name, const char* value) {
-  if (strcmp(name, "gps") == 0) {
-    if (strcmp(value, "0") == 0) {
-      stop_gps();
-    } else {
-      start_gps();
-    }
-    return true;
-  }
-  return false;  // not supported
-}

+ 2 - 18
variants/techo/target.h

@@ -7,33 +7,17 @@
 #include <helpers/radiolib/CustomSX1262Wrapper.h>
 #include <helpers/AutoDiscoverRTCClock.h>
 #include <helpers/SensorManager.h>
+#include <helpers/sensors/EnvironmentSensorManager.h>
 #include <helpers/sensors/LocationProvider.h>
 #ifdef DISPLAY_CLASS
   #include <helpers/ui/GxEPDDisplay.h>
   #include <helpers/ui/MomentaryButton.h>
 #endif
 
-class TechoSensorManager : public SensorManager {
-  bool gps_active = false;
-  LocationProvider* _location;
-
-  void start_gps();
-  void stop_gps();
-public:
-  TechoSensorManager(LocationProvider &location): _location(&location) { }
-  bool begin() override;
-  bool querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) override;
-  void loop() override;
-  int getNumSettings() const override;
-  const char* getSettingName(int i) const override;
-  const char* getSettingValue(int i) const override;
-  bool setSettingValue(const char* name, const char* value) override;
-};
-
 extern TechoBoard board;
 extern WRAPPER_CLASS radio_driver;
 extern AutoDiscoverRTCClock rtc_clock;
-extern TechoSensorManager sensors;
+extern EnvironmentSensorManager sensors;
 
 #ifdef DISPLAY_CLASS
   extern DISPLAY_CLASS display;