Refactor GPS wrapper to semicolon constructor notation
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user