LoRa_APRS_iGate/src/TaskAprsIs.cpp

57 wiersze
1.5 KiB
C++
Czysty Zwykły widok Historia

#include <TimeLib.h>
#include <logger.h>
2021-01-04 22:10:23 +00:00
#include "Task.h"
#include "TaskAprsIs.h"
#include "project_configuration.h"
2021-05-15 21:10:24 +00:00
AprsIsTask::AprsIsTask(TaskQueue<std::shared_ptr<APRSMessage>> *const toAprsIs) : Task(TASK_APRS_IS, TaskAprsIs), _toAprsIs(toAprsIs) {
}
AprsIsTask::~AprsIsTask() {
}
bool AprsIsTask::setup(std::shared_ptr<System> system) {
_aprs_is = std::shared_ptr<APRS_IS>(new APRS_IS(system->getUserConfig()->callsign, system->getUserConfig()->aprs_is.passcode, "ESP32-APRS-IS", "0.2"));
return true;
}
bool AprsIsTask::loop(std::shared_ptr<System> system) {
if (!system->isWifiEthConnected()) {
return false;
}
if (!_aprs_is->connected()) {
if (!connect(system)) {
_stateInfo = "not connected";
_state = Error;
return false;
}
_stateInfo = "connected";
_state = Okay;
return false;
}
_aprs_is->getAPRSMessage();
2021-05-15 20:58:15 +00:00
if (!_toAprsIs->empty()) {
std::shared_ptr<APRSMessage> msg = _toAprsIs->getElement();
_aprs_is->sendMessage(msg);
}
2021-01-04 22:10:23 +00:00
return true;
}
bool AprsIsTask::connect(std::shared_ptr<System> system) {
logPrintI("connecting to APRS-IS server: ");
logPrintI(system->getUserConfig()->aprs_is.server);
logPrintI(" on port: ");
logPrintlnI(String(system->getUserConfig()->aprs_is.port));
if (!_aprs_is->connect(system->getUserConfig()->aprs_is.server, system->getUserConfig()->aprs_is.port)) {
logPrintlnE("Connection failed.");
return false;
}
logPrintlnI("Connected to APRS-IS server!");
return true;
}