diff --git a/data/igate_conf.json b/data/igate_conf.json
index ab32f61..231658d 100644
--- a/data/igate_conf.json
+++ b/data/igate_conf.json
@@ -82,7 +82,8 @@
"tnc": {
"enableServer": false,
"enableSerial": false,
- "acceptOwn": false
+ "acceptOwn": false,
+ "aprsBrigdeActive": false
},
"mqtt": {
"active": false,
diff --git a/data_embed/index.html b/data_embed/index.html
index 218c807..2f0b21b 100644
--- a/data_embed/index.html
+++ b/data_embed/index.html
@@ -1511,25 +1511,7 @@
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data_embed/script.js b/data_embed/script.js
index 326f388..a6c68fb 100644
--- a/data_embed/script.js
+++ b/data_embed/script.js
@@ -206,6 +206,7 @@ function loadSettings(settings) {
document.getElementById("tnc.enableServer").checked = settings.tnc.enableServer;
document.getElementById("tnc.enableSerial").checked = settings.tnc.enableSerial;
document.getElementById("tnc.acceptOwn").checked = settings.tnc.acceptOwn;
+ document.getElementById("tnc.aprsBridgeActive").checked = settings.tnc.aprsBridgeActive;
}
// MQTT
diff --git a/include/configuration.h b/include/configuration.h
index 4985da2..22d0bb3 100644
--- a/include/configuration.h
+++ b/include/configuration.h
@@ -127,6 +127,7 @@ public:
bool enableServer;
bool enableSerial;
bool acceptOwn;
+ bool aprsBridgeActive;
};
class OTA {
diff --git a/src/aprs_is_utils.cpp b/src/aprs_is_utils.cpp
index a1ee089..1e79493 100644
--- a/src/aprs_is_utils.cpp
+++ b/src/aprs_is_utils.cpp
@@ -25,6 +25,7 @@
#include "query_utils.h"
#include "A7670_utils.h"
#include "digi_utils.h"
+#include "tnc_utils.h"
#include "display.h"
#include "utils.h"
@@ -367,6 +368,10 @@ namespace APRS_IS_Utils {
Serial.println(" ---> Rejected (Time): No Tx");
}
}
+ if (Config.tnc.aprsBridgeActive) {
+ if (Config.tnc.enableServer) TNC_Utils::sendToClients(packet); // Send received packet to TNC KISS
+ if (Config.tnc.enableSerial) TNC_Utils::sendToSerial(packet); // Send received packet to Serial KISS
+ }
}
}
diff --git a/src/configuration.cpp b/src/configuration.cpp
index 31d83ba..7a2c1e7 100644
--- a/src/configuration.cpp
+++ b/src/configuration.cpp
@@ -131,6 +131,7 @@ bool Configuration::writeFile() {
data["tnc"]["enableServer"] = tnc.enableServer;
data["tnc"]["enableSerial"] = tnc.enableSerial;
data["tnc"]["acceptOwn"] = tnc.acceptOwn;
+ data["tnc"]["aprsBridgeActive"] = tnc.aprsBridgeActive;
data["mqtt"]["active"] = mqtt.active;
data["mqtt"]["server"] = mqtt.server;
@@ -331,10 +332,12 @@ bool Configuration::readFile() {
if (!data["tnc"].containsKey("enableServer") ||
!data["tnc"].containsKey("enableSerial") ||
- !data["tnc"].containsKey("acceptOwn")) needsRewrite = true;
+ !data["tnc"].containsKey("acceptOwn") ||
+ !data["tnc"].containsKey("aprsBridgeActive")) needsRewrite = true;
tnc.enableServer = data["tnc"]["enableServer"] | false;
tnc.enableSerial = data["tnc"]["enableSerial"] | false;
tnc.acceptOwn = data["tnc"]["acceptOwn"] | false;
+ tnc.aprsBridgeActive = data["tnc"]["aprsBridgeActive"] | false;
if (!data["mqtt"].containsKey("active") ||
!data["mqtt"].containsKey("server") ||
@@ -496,6 +499,7 @@ void Configuration::setDefaultValues() {
tnc.enableServer = false;
tnc.enableSerial = false;
tnc.acceptOwn = false;
+ tnc.aprsBridgeActive = false;
mqtt.active = false;
mqtt.server = "";
diff --git a/src/tnc_utils.cpp b/src/tnc_utils.cpp
index 60689a3..73492de 100644
--- a/src/tnc_utils.cpp
+++ b/src/tnc_utils.cpp
@@ -21,12 +21,15 @@
#include "configuration.h"
#include "station_utils.h"
#include "kiss_protocol.h"
+#include "aprs_is_utils.h"
#include "kiss_utils.h"
#include "tnc_utils.h"
#include "utils.h"
-extern Configuration Config;
+extern Configuration Config;
+extern WiFiClient aprsIsClient;
+extern bool passcodeValid;
#define MAX_CLIENTS 4
#define INPUT_BUFFER_SIZE (2 + MAX_CLIENTS)
@@ -94,7 +97,8 @@ namespace TNC_Utils {
String sender = frame.substring(0,frame.indexOf(">"));
if (Config.tnc.acceptOwn || sender != Config.callsign) {
- STATION_Utils::addToOutputPacketBuffer(frame);
+ if (Config.loramodule.txActive) STATION_Utils::addToOutputPacketBuffer(frame);
+ if (Config.tnc.aprsBridgeActive && Config.aprs_is.active && passcodeValid && aprsIsClient.connected()) APRS_IS_Utils::upload(frame);
} else {
Utils::println("Ignored own frame from KISS");
}
diff --git a/src/web_utils.cpp b/src/web_utils.cpp
index ae01373..72fcf25 100644
--- a/src/web_utils.cpp
+++ b/src/web_utils.cpp
@@ -259,6 +259,7 @@ namespace WEB_Utils {
Config.tnc.enableServer = request->hasParam("tnc.enableServer", true);
Config.tnc.enableSerial = request->hasParam("tnc.enableSerial", true);
Config.tnc.acceptOwn = request->hasParam("tnc.acceptOwn", true);
+ Config.tnc.aprsBridgeActive = request->hasParam("tnc.aprsBridgeActive", true);
Config.mqtt.active = request->hasParam("mqtt.active", true);