Refactor GPS wrapper to semicolon constructor notation

This commit is contained in:
2026-03-22 23:01:11 +01:00
parent ea32d8e5b4
commit 00a55d8411

View File

@@ -1,60 +1,59 @@
#pragma once #pragma once
#include "TinyGPSPlus.h" #include "TinyGPSPlus.h"
#include "modules/logger/system_logger.h"
#include "flags.h" #include "flags.h"
#include "modules/logger/system_logger.h"
class gps class gps {
{
private: private:
TinyGPSPlus *_gps; TinyGPSPlus *_gps;
HardwareSerial *_data_stream; HardwareSerial *_data_stream;
system_logger *_logger = nullptr; system_logger *_logger;
bool _lock_valid = false; bool _lock_valid = false;
unsigned long _last_lock = 0; unsigned long _last_lock = 0;
public: public:
gps(HardwareSerial *data_stream); gps(HardwareSerial *data_stream);
gps(HardwareSerial *data_stream, system_logger *logger); gps(HardwareSerial *data_stream, system_logger *logger);
~gps(); ~gps();
int parse_task(unsigned long timeout_ms = 500); int parse_task(unsigned long timeout_ms = 500);
int init(); int init();
}; };
gps::gps(HardwareSerial *data_stream) { gps::gps(HardwareSerial *data_stream) : _data_stream(data_stream), _logger(nullptr){
_data_stream = data_stream; _data_stream = data_stream;
_gps = new TinyGPSPlus(); _gps = new TinyGPSPlus();
} }
gps::gps(HardwareSerial *data_stream, system_logger *logger) { gps::gps(HardwareSerial *data_stream, system_logger *logger)
_data_stream = data_stream; : _data_stream(data_stream), _logger(logger) {
_gps = new TinyGPSPlus(); _gps = new TinyGPSPlus();
_logger = logger;
} }
gps::~gps() { gps::~gps() {
_data_stream = nullptr; _data_stream = nullptr;
delete _gps; delete _gps;
} }
int gps::init() { int gps::init() {
_data_stream->begin(9600); _data_stream->begin(9600);
return 0; return 0;
} }
int gps::parse_task(unsigned long timeout_ms) { int gps::parse_task(unsigned long timeout_ms) {
unsigned long timeout = millis() + timeout_ms; unsigned long timeout = millis() + timeout_ms;
while (_data_stream->available() > 0) { while (_data_stream->available() > 0) {
if (_gps->encode(_data_stream->read())) { if (_gps->encode(_data_stream->read())) {
_lock_valid = true; _lock_valid = true;
_last_lock = millis(); _last_lock = millis();
}
if (millis() > timeout) {
#ifdef DEBUG
if (_logger != nullptr) {
_logger->debug("GPS Parser timed out, exiting task");
}
#endif
return 1;
}
} }
return 0; if (millis() > timeout) {
#ifdef DEBUG
if (_logger != nullptr) {
_logger->debug("GPS Parser timed out, exiting task");
}
#endif
return 1;
}
}
return 0;
} }