kopia lustrzana https://github.com/lora-aprs/LoRa_APRS_iGate
Merge pull request #289 from lora-aprs/send-aprs-is-messages-on-hf
Send aprs-is messages on HF if activatedpull/291/head
commit
fe0fad98bc
|
@ -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,
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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.");
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -67,6 +67,7 @@ public:
|
||||||
String passcode;
|
String passcode;
|
||||||
String server;
|
String server;
|
||||||
int port;
|
int port;
|
||||||
|
String filter;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Digi {
|
class Digi {
|
||||||
|
|
Ładowanie…
Reference in New Issue