LoRa_APRS_iGate/src/TaskAprsIs.cpp

55 wiersze
1.4 KiB
C++
Czysty Zwykły widok Historia

#include <logger.h>
2021-01-04 22:10:23 +00:00
#include "Task.h"
#include "TaskAprsIs.h"
#include "project_configuration.h"
2021-05-16 06:40:44 +00:00
AprsIsTask::AprsIsTask(TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs) : Task(TASK_APRS_IS, TaskAprsIs), _toAprsIs(toAprsIs) {
}
AprsIsTask::~AprsIsTask() {
}
2021-05-18 22:44:37 +00:00
bool AprsIsTask::setup(System &system) {
2021-05-21 20:41:30 +00:00
_aprs_is.setup(system.getUserConfig()->callsign, system.getUserConfig()->aprs_is.passcode, "ESP32-APRS-IS", "0.2");
return true;
}
2021-05-18 22:44:37 +00:00
bool AprsIsTask::loop(System &system) {
if (!system.isWifiEthConnected()) {
return false;
}
2021-05-21 20:41:30 +00:00
if (!_aprs_is.connected()) {
if (!connect(system)) {
_stateInfo = "not connected";
_state = Error;
return false;
}
_stateInfo = "connected";
_state = Okay;
return false;
}
2021-05-21 20:41:30 +00:00
_aprs_is.getAPRSMessage();
2021-05-16 01:52:28 +00:00
if (!_toAprsIs.empty()) {
std::shared_ptr<APRSMessage> msg = _toAprsIs.getElement();
2021-05-21 20:41:30 +00:00
_aprs_is.sendMessage(msg);
}
2021-01-04 22:10:23 +00:00
return true;
}
2021-05-21 21:28:50 +00:00
bool AprsIsTask::connect(const System &system) {
logPrintI("connecting to APRS-IS server: ");
2021-05-18 22:44:37 +00:00
logPrintI(system.getUserConfig()->aprs_is.server);
logPrintI(" on port: ");
2021-05-18 22:44:37 +00:00
logPrintlnI(String(system.getUserConfig()->aprs_is.port));
2021-05-21 20:41:30 +00:00
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;
}