From 6eb82b78bf8d1c7ababa9b18e37be61c7e22deec Mon Sep 17 00:00:00 2001 From: Christoph Kottke Date: Mon, 24 May 2021 14:22:16 +0200 Subject: [PATCH] make APRS-IS connection optional --- data/is-cfg.json | 1 + src/LoRa_APRS_iGate.cpp | 4 +++- src/TaskRouter.cpp | 11 +++++++++-- src/project_configuration.cpp | 2 ++ src/project_configuration.h | 3 ++- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/data/is-cfg.json b/data/is-cfg.json index df180eb..1a685b0 100644 --- a/data/is-cfg.json +++ b/data/is-cfg.json @@ -17,6 +17,7 @@ "timeout": 15 }, "aprs_is": { + "active": true, "passcode": "", "server": "euro.aprs2.net", "port": 14580 diff --git a/src/LoRa_APRS_iGate.cpp b/src/LoRa_APRS_iGate.cpp index 01d62ba..36d254e 100644 --- a/src/LoRa_APRS_iGate.cpp +++ b/src/LoRa_APRS_iGate.cpp @@ -105,7 +105,9 @@ void setup() { if (userConfig.ftp.active) { LoRaSystem.getTaskManager().addTask(&ftpTask); } - LoRaSystem.getTaskManager().addTask(&aprsIsTask); + if (userConfig.aprs_is.active) { + LoRaSystem.getTaskManager().addTask(&aprsIsTask); + } LoRaSystem.getTaskManager().addTask(&routerTask); LoRaSystem.getTaskManager().setup(LoRaSystem); diff --git a/src/TaskRouter.cpp b/src/TaskRouter.cpp index 73f5ba3..9b4218d 100644 --- a/src/TaskRouter.cpp +++ b/src/TaskRouter.cpp @@ -40,7 +40,8 @@ bool RouterTask::loop(System &system) { } msg->setPath(path + "qAR," + system.getUserConfig()->callsign); - _toAprsIs.addElement(msg); + if (system.getUserConfig()->aprs_is.active) + _toAprsIs.addElement(msg); } } @@ -48,11 +49,17 @@ bool RouterTask::loop(System &system) { if (_beacon_timer.check()) { logPrintD("[" + timeString() + "] "); logPrintlnD(_beaconMsg->encode()); - _toAprsIs.addElement(_beaconMsg); + + if (system.getUserConfig()->aprs_is.active) + _toAprsIs.addElement(_beaconMsg); + system.getDisplay().addFrame(std::shared_ptr(new TextFrame("BEACON", _beaconMsg->toString()))); + _beacon_timer.start(); } + uint32_t diff = _beacon_timer.getTriggerTimeInSec(); _stateInfo = "beacon " + String(uint32_t(diff / 60)) + ":" + String(uint32_t(diff % 60)); + return true; } diff --git a/src/project_configuration.cpp b/src/project_configuration.cpp index 3514a97..56b3f25 100644 --- a/src/project_configuration.cpp +++ b/src/project_configuration.cpp @@ -20,6 +20,7 @@ void ProjectConfigurationManagement::readProjectConfiguration(DynamicJsonDocumen conf.beacon.positionLatitude = data["beacon"]["position"]["latitude"] | 0.0; conf.beacon.positionLongitude = data["beacon"]["position"]["longitude"] | 0.0; conf.beacon.timeout = data["beacon"]["timeout"] | 15; + conf.aprs_is.active = data["aprs_is"]["active"] | true; if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("passcode")) conf.aprs_is.passcode = data["aprs_is"]["passcode"].as(); if (data.containsKey("aprs_is") && data["aprs_is"].containsKey("server")) @@ -73,6 +74,7 @@ void ProjectConfigurationManagement::writeProjectConfiguration(Configuration &co data["beacon"]["position"]["latitude"] = conf.beacon.positionLatitude; data["beacon"]["position"]["longitude"] = conf.beacon.positionLongitude; data["beacon"]["timeout"] = conf.beacon.timeout; + data["aprs_is"]["active"] = conf.aprs_is.active; data["aprs_is"]["passcode"] = conf.aprs_is.passcode; data["aprs_is"]["server"] = conf.aprs_is.server; data["aprs_is"]["port"] = conf.aprs_is.port; diff --git a/src/project_configuration.h b/src/project_configuration.h index e63e1f1..2bbbe35 100644 --- a/src/project_configuration.h +++ b/src/project_configuration.h @@ -33,9 +33,10 @@ public: class APRS_IS { public: - APRS_IS() : server("euro.aprs2.net"), port(14580) { + APRS_IS() : active(true), server("euro.aprs2.net"), port(14580) { } + bool active; String passcode; String server; int port;