Skip to content

Commit 837dcc2

Browse files
committed
Additional rules for gating
1 parent 8ecc9ba commit 837dcc2

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

codec2talkie/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ android {
1010
applicationId "com.radio.codec2talkie"
1111
minSdkVersion 23
1212
targetSdkVersion 30
13-
versionCode 158
14-
versionName "1.58"
13+
versionCode 159
14+
versionName "1.59"
1515

1616
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1717
}

codec2talkie/src/main/java/com/radio/codec2talkie/protocol/AprsIs.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ public boolean receive() throws IOException {
135135
AprsIsData aprsIsData = AprsIsData.fromString(line);
136136
if (aprsIsData != null) {
137137
_parentProtocolCallback.onReceiveData(aprsIsData.src, aprsIsData.dst, aprsIsData.rawDigipath, aprsIsData.data.getBytes());
138-
if (_isTxGateEnabled && new AprsCallsign(aprsIsData.src).isValid && !_isLoopbackTransport) {
138+
AprsCallsign aprsCallsign = new AprsCallsign(aprsIsData.src);
139+
if (_isTxGateEnabled && aprsCallsign.isValid && !_isLoopbackTransport && aprsIsData.isEligibleForTxGate()) {
139140
// TODO, add tx aprs filter https://aprs-is.net/IGating.aspx
140141
_childProtocol.sendData(aprsIsData.src, aprsIsData.dst, aprsIsData.digipath, aprsIsData.data.getBytes());
141142
}
@@ -171,8 +172,10 @@ protected void onReceiveData(String src, String dst, String path, byte[] data) {
171172
if (_isRxGateEnabled && !_isLoopbackTransport) {
172173
// TODO, additional RX filter https://aprs-is.net/IGateDetails.aspx
173174
AprsIsData aprsIsData = new AprsIsData(src, dst, path, new String(data));
174-
synchronized (_txQueue) {
175-
_txQueue.put(aprsIsData.toString().getBytes());
175+
if (aprsIsData.isEligibleForRxGate()) {
176+
synchronized (_txQueue) {
177+
_txQueue.put(aprsIsData.toString().getBytes());
178+
}
176179
}
177180
}
178181
_parentProtocolCallback.onReceiveData(src, dst, path, data);

codec2talkie/src/main/java/com/radio/codec2talkie/protocol/aprs/tools/AprsIsData.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,22 @@ public String toString() {
3333
return result;
3434
}
3535

36+
public boolean isEligibleForRxGate() {
37+
boolean hasNoGate = rawDigipath.contains("TCPIP") ||
38+
rawDigipath.contains("TCPXX") ||
39+
rawDigipath.contains("NOGATE") ||
40+
rawDigipath.contains("RFONLY");
41+
42+
// do not gate TCPIP/NOGATE and queries
43+
return !hasNoGate && !data.startsWith("?");
44+
}
45+
46+
public boolean isEligibleForTxGate() {
47+
return !(rawDigipath.contains("TCPXX") ||
48+
rawDigipath.contains("NOGATE") ||
49+
rawDigipath.contains("RFONLY"));
50+
}
51+
3652
public static AprsIsData fromString(String textData) {
3753
AprsIsData aprsIsData = new AprsIsData();
3854
// N0CALL>PATH:DATA

0 commit comments

Comments
 (0)