* refactor: LocationProvider classes moved to src/helpers/sensors

* refactor:  Heltec_Wireless_Tracker* env moved to new variants/heltec_tracker dir
This commit is contained in:
Scott Powell
2025-05-08 13:23:53 +10:00
parent 60b7897665
commit 98f1785104
8 changed files with 159 additions and 44 deletions

View File

@@ -1,17 +0,0 @@
#pragma once
#include "Mesh.h"
class LocationProvider {
public:
virtual long getLatitude() = 0;
virtual long getLongitude() = 0;
virtual bool isValid() = 0;
virtual long getTimestamp() = 0;
virtual void reset();
virtual void begin();
virtual void stop();
virtual void loop();
};

View File

@@ -1,80 +0,0 @@
#pragma once
#include "LocationProvider.h"
#include <MicroNMEA.h>
#include <RTClib.h>
#ifndef GPS_EN
#define GPS_EN (-1)
#endif
#ifndef GPS_RESET
#define GPS_RESET (-1)
#endif
#ifndef GPS_RESET_FORCE
#define GPS_RESET_FORCE LOW
#endif
class MicroNMEALocationProvider : public LocationProvider {
char _nmeaBuffer[100];
MicroNMEA nmea;
Stream* _gps_serial;
int _pin_reset;
int _pin_en;
public :
MicroNMEALocationProvider(Stream& ser, int pin_reset = GPS_RESET, int pin_en = GPS_EN) :
_gps_serial(&ser), nmea(_nmeaBuffer, sizeof(_nmeaBuffer)), _pin_reset(pin_reset), _pin_en(pin_en) {
if (_pin_reset != -1) {
pinMode(_pin_reset, OUTPUT);
digitalWrite(_pin_reset, GPS_RESET_FORCE);
}
if (_pin_en != -1) {
pinMode(_pin_en, OUTPUT);
digitalWrite(_pin_en, LOW);
}
}
void begin() override {
if (_pin_reset != -1) {
digitalWrite(_pin_reset, !GPS_RESET_FORCE);
}
if (_pin_en != -1) {
digitalWrite(_pin_en, HIGH);
}
}
void reset() override {
if (_pin_reset != -1) {
digitalWrite(_pin_reset, GPS_RESET_FORCE);
delay(100);
digitalWrite(_pin_reset, !GPS_RESET_FORCE);
}
}
void stop() override {
if (_pin_en != -1) {
digitalWrite(_pin_en, LOW);
}
}
long getLatitude() override { return nmea.getLatitude(); }
long getLongitude() override { return nmea.getLongitude(); }
bool isValid() override { return nmea.isValid(); }
long getTimestamp() override {
DateTime dt(nmea.getYear(), nmea.getMonth(),nmea.getDay(),nmea.getHour(),nmea.getMinute(),nmea.getSecond());
return dt.unixtime();
}
void loop() override {
while (_gps_serial->available()) {
char c = _gps_serial->read();
#ifdef GPS_NMEA_DEBUG
Serial.print(c);
#endif
nmea.process(c);
}
}
};

View File

@@ -1,5 +1,6 @@
#include <Arduino.h>
#include "target.h"
#include <helpers/sensors/MicroNMEALocationProvider.h>
T1000eBoard board;

View File

@@ -1,7 +1,5 @@
#pragma once
#include "MicroNMEALocationProvider.h"
#define RADIOLIB_STATIC_ONLY 1
#include <RadioLib.h>
#include <helpers/RadioLibWrappers.h>
@@ -9,6 +7,7 @@
#include <helpers/CustomLR1110Wrapper.h>
#include <helpers/ArduinoHelpers.h>
#include <helpers/SensorManager.h>
#include <helpers/sensors/LocationProvider.h>
class T1000SensorManager: public SensorManager {
bool gps_active = false;