Merge pull request #289 from lora-aprs/send-aprs-is-messages-on-hf

Send aprs-is messages on HF if activated
pull/291/head
Peter Buchegger 2023-04-20 15:59:34 +00:00 zatwierdzone przez GitHub
commit fe0fad98bc
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
7 zmienionych plików z 22 dodań i 7 usunięć

Wyświetl plik

@ -36,7 +36,8 @@
"active": true, "active": true,
"passcode": "", "passcode": "",
"server": "euro.aprs2.net", "server": "euro.aprs2.net",
"port": 14580 "port": 14580,
"filter": ""
}, },
"digi": { "digi": {
"active": false, "active": false,

Wyświetl plik

@ -45,7 +45,7 @@ OTATask otaTask;
NTPTask ntpTask; NTPTask ntpTask;
FTPTask ftpTask; FTPTask ftpTask;
MQTTTask mqttTask(toMQTT); MQTTTask mqttTask(toMQTT);
AprsIsTask aprsIsTask(toAprsIs); AprsIsTask aprsIsTask(toAprsIs, toModem);
RouterTask routerTask(fromModem, toModem, toAprsIs, toMQTT); RouterTask routerTask(fromModem, toModem, toAprsIs, toMQTT);
BeaconTask beaconTask(toModem, toAprsIs); BeaconTask beaconTask(toModem, toAprsIs);

Wyświetl plik

@ -4,7 +4,7 @@
#include "TaskAprsIs.h" #include "TaskAprsIs.h"
#include "project_configuration.h" #include "project_configuration.h"
AprsIsTask::AprsIsTask(TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs) : Task(TASK_APRS_IS, TaskAprsIs), _toAprsIs(toAprsIs) { AprsIsTask::AprsIsTask(TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs, TaskQueue<std::shared_ptr<APRSMessage>> &toModem) : Task(TASK_APRS_IS, TaskAprsIs), _toAprsIs(toAprsIs), _toModem(toModem) {
} }
AprsIsTask::~AprsIsTask() { AprsIsTask::~AprsIsTask() {
@ -30,7 +30,10 @@ bool AprsIsTask::loop(System &system) {
return false; return false;
} }
_aprs_is.getAPRSMessage(); std::shared_ptr<APRSMessage> msg = _aprs_is.getAPRSMessage();
if (msg) {
_toModem.addElement(msg);
}
if (!_toAprsIs.empty()) { if (!_toAprsIs.empty()) {
std::shared_ptr<APRSMessage> msg = _toAprsIs.getElement(); std::shared_ptr<APRSMessage> msg = _toAprsIs.getElement();
@ -41,8 +44,13 @@ bool AprsIsTask::loop(System &system) {
} }
bool AprsIsTask::connect(System &system) { bool AprsIsTask::connect(System &system) {
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_INFO, getName(), "connecting to APRS-IS server: %s on port: %d", system.getUserConfig()->aprs_is.server.c_str(), system.getUserConfig()->aprs_is.port); system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_INFO, getName(), "connecting to APRS-IS server: %s on port: %d, with filter: '%s'", system.getUserConfig()->aprs_is.server.c_str(), system.getUserConfig()->aprs_is.port, system.getUserConfig()->aprs_is.filter);
APRS_IS::ConnectionStatus status = _aprs_is.connect(system.getUserConfig()->aprs_is.server, system.getUserConfig()->aprs_is.port); APRS_IS::ConnectionStatus status = APRS_IS::ConnectionStatus::ERROR_CONNECTION;
if (system.getUserConfig()->aprs_is.filter.isEmpty()) {
status = _aprs_is.connect(system.getUserConfig()->aprs_is.server, system.getUserConfig()->aprs_is.port);
} else {
status = _aprs_is.connect(system.getUserConfig()->aprs_is.server, system.getUserConfig()->aprs_is.port, system.getUserConfig()->aprs_is.filter);
}
if (status == APRS_IS::ERROR_CONNECTION) { if (status == APRS_IS::ERROR_CONNECTION) {
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_ERROR, getName(), "Something went wrong on connecting! Is the server reachable?"); system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_ERROR, getName(), "Something went wrong on connecting! Is the server reachable?");
system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_ERROR, getName(), "Connection failed."); system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_ERROR, getName(), "Connection failed.");

Wyświetl plik

@ -8,7 +8,7 @@
class AprsIsTask : public Task { class AprsIsTask : public Task {
public: public:
explicit AprsIsTask(TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs); explicit AprsIsTask(TaskQueue<std::shared_ptr<APRSMessage>> &toAprsIs, TaskQueue<std::shared_ptr<APRSMessage>> &toModem);
virtual ~AprsIsTask(); virtual ~AprsIsTask();
virtual bool setup(System &system) override; virtual bool setup(System &system) override;
@ -18,6 +18,7 @@ private:
APRS_IS _aprs_is; APRS_IS _aprs_is;
TaskQueue<std::shared_ptr<APRSMessage>> &_toAprsIs; TaskQueue<std::shared_ptr<APRSMessage>> &_toAprsIs;
TaskQueue<std::shared_ptr<APRSMessage>> &_toModem;
bool connect(System &system); bool connect(System &system);
}; };

Wyświetl plik

@ -164,6 +164,7 @@ bool RadiolibTask::loop(System &system) {
} else { } else {
if (!txEnable) { if (!txEnable) {
// system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] TX is not enabled", timeString().c_str()); // system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] TX is not enabled", timeString().c_str());
_toModem.getElement(); // empty list, otherwise memory will get full.
} else { } else {
if (transmitFlag) { if (transmitFlag) {
// system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] TX signal detected. Waiting TX", timeString().c_str()); // system.getLogger().log(logging::LoggerLevel::LOGGER_LEVEL_DEBUG, getName(), "[%s] TX signal detected. Waiting TX", timeString().c_str());

Wyświetl plik

@ -52,6 +52,8 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen
if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("server")) if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("server"))
conf.aprs_is.server = data["aprs_is"]["server"].as<String>(); conf.aprs_is.server = data["aprs_is"]["server"].as<String>();
conf.aprs_is.port = data["aprs_is"]["port"] | 14580; conf.aprs_is.port = data["aprs_is"]["port"] | 14580;
if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("filter"))
conf.aprs_is.filter = data["aprs_is"]["filter"].as<String>();
conf.digi.active = data["digi"]["active"] | false; conf.digi.active = data["digi"]["active"] | false;
conf.digi.beacon = data["digi"]["beacon"] | false; conf.digi.beacon = data["digi"]["beacon"] | false;
@ -147,6 +149,7 @@ void ProjectConfigurationManagement::writeProjectConfiguration(Configuration &co
data["aprs_is"]["passcode"] = conf.aprs_is.passcode; data["aprs_is"]["passcode"] = conf.aprs_is.passcode;
data["aprs_is"]["server"] = conf.aprs_is.server; data["aprs_is"]["server"] = conf.aprs_is.server;
data["aprs_is"]["port"] = conf.aprs_is.port; data["aprs_is"]["port"] = conf.aprs_is.port;
data["aprs_is"]["filter"] = conf.aprs_is.filter;
data["digi"]["active"] = conf.digi.active; data["digi"]["active"] = conf.digi.active;
data["digi"]["beacon"] = conf.digi.beacon; data["digi"]["beacon"] = conf.digi.beacon;
data["lora"]["frequency_rx"] = conf.lora.frequencyRx; data["lora"]["frequency_rx"] = conf.lora.frequencyRx;

Wyświetl plik

@ -67,6 +67,7 @@ public:
String passcode; String passcode;
String server; String server;
int port; int port;
String filter;
}; };
class Digi { class Digi {