Additional guarding of APRS-IS with loopback transport

master 1.58
sh123 2023-06-30 08:46:35 +03:00
rodzic 32d6b92960
commit dea6304258
2 zmienionych plików z 9 dodań i 4 usunięć

Wyświetl plik

@ -10,8 +10,8 @@ android {
applicationId "com.radio.codec2talkie"
minSdkVersion 23
targetSdkVersion 30
versionCode 157
versionName "1.57"
versionCode 158
versionName "1.58"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

Wyświetl plik

@ -15,6 +15,7 @@ import com.radio.codec2talkie.protocol.aprs.tools.AprsIsData;
import com.radio.codec2talkie.protocol.message.TextMessage;
import com.radio.codec2talkie.protocol.position.Position;
import com.radio.codec2talkie.settings.PreferenceKeys;
import com.radio.codec2talkie.settings.SettingsWrapper;
import com.radio.codec2talkie.tools.DebugTools;
import com.radio.codec2talkie.tools.TextTools;
import com.radio.codec2talkie.transport.TcpIp;
@ -48,6 +49,7 @@ public class AprsIs implements Protocol, Runnable {
private boolean _isSelfEnabled;
private boolean _isRxGateEnabled;
private boolean _isTxGateEnabled;
private boolean _isLoopbackTransport;
private String _callsign;
private String _ssid;
@ -84,6 +86,7 @@ public class AprsIs implements Protocol, Runnable {
_server = sharedPreferences.getString(PreferenceKeys.APRS_IS_TCPIP_SERVER, "euro.aprs2.net");
_filterRadius = Integer.parseInt(sharedPreferences.getString(PreferenceKeys.APRS_IS_RADIUS, "10"));
_filter = sharedPreferences.getString(PreferenceKeys.APRS_IS_FILTER, "");
_isLoopbackTransport = SettingsWrapper.isLoopbackTransport(sharedPreferences);
Log.i(TAG, "AprsIs RX gate: " + _isTxGateEnabled + ", TX gate: " + _isTxGateEnabled + ", server: " + _server);
@ -132,7 +135,8 @@ public class AprsIs implements Protocol, Runnable {
AprsIsData aprsIsData = AprsIsData.fromString(line);
if (aprsIsData != null) {
_parentProtocolCallback.onReceiveData(aprsIsData.src, aprsIsData.dst, aprsIsData.rawDigipath, aprsIsData.data.getBytes());
if (_isTxGateEnabled && new AprsCallsign(aprsIsData.src).isValid) {
if (_isTxGateEnabled && new AprsCallsign(aprsIsData.src).isValid && !_isLoopbackTransport) {
// TODO, add tx aprs filter https://aprs-is.net/IGating.aspx
_childProtocol.sendData(aprsIsData.src, aprsIsData.dst, aprsIsData.digipath, aprsIsData.data.getBytes());
}
}
@ -164,7 +168,8 @@ public class AprsIs implements Protocol, Runnable {
@Override
protected void onReceiveData(String src, String dst, String path, byte[] data) {
if (_isRxGateEnabled) {
if (_isRxGateEnabled && !_isLoopbackTransport) {
// TODO, additional RX filter https://aprs-is.net/IGateDetails.aspx
AprsIsData aprsIsData = new AprsIsData(src, dst, path, new String(data));
synchronized (_txQueue) {
_txQueue.put(aprsIsData.toString().getBytes());