Third party packets handling

master
sh123 2023-07-03 18:53:02 +03:00
rodzic ef7f4a8dcd
commit 2c7e3e80b5
4 zmienionych plików z 24 dodań i 12 usunięć

Wyświetl plik

@ -22,6 +22,7 @@ import java.util.Timer;
import java.util.TimerTask;
import com.radio.codec2talkie.R;
import com.radio.codec2talkie.protocol.aprs.tools.AprsIsData;
import com.radio.codec2talkie.protocol.message.TextMessage;
import com.radio.codec2talkie.storage.log.LogItem;
import com.radio.codec2talkie.storage.log.LogItemRepository;
@ -375,17 +376,25 @@ public class AppWorker extends Thread {
}
};
void storeLogData(String logData, boolean isTransmit) {
// TODO, parse through aprs data
String[] callsignData = logData.split(">");
if (callsignData.length >= 2) {
private void storeLogData(String logData, boolean isTransmit) {
AprsIsData aprsIsData = AprsIsData.fromString(logData);
if (aprsIsData != null) {
LogItem logItem = new LogItem();
logItem.setTimestampEpoch(System.currentTimeMillis());
logItem.setSrcCallsign(callsignData[0]);
logItem.setLogLine(logData);
logItem.setIsTransmit(isTransmit);
logItem.setSrcCallsign(aprsIsData.src);
logItem.setLogLine(logData);
_logItemRepository.insertLogItem(logItem);
_stationItemRepository.upsertStationItem(logItem.toStationItem());
if (aprsIsData.hasThirdParty()) {
LogItem logItemThirdParty = new LogItem();
logItemThirdParty.setTimestampEpoch(System.currentTimeMillis());
logItemThirdParty.setIsTransmit(isTransmit);
logItemThirdParty.setSrcCallsign(aprsIsData.thirdParty.src);
logItemThirdParty.setLogLine(aprsIsData.thirdParty.convertToString(true));
_logItemRepository.insertLogItem(logItemThirdParty);
_stationItemRepository.upsertStationItem(logItemThirdParty.toStationItem());
}
}
}

Wyświetl plik

@ -127,7 +127,7 @@ public class AprsIs implements Protocol, Runnable {
if (_isSelfEnabled) {
AprsIsData aprsIsData = new AprsIsData(src, dst, path, new String(data));
synchronized (_toAprsIsQueue) {
String rawData = aprsIsData.toString() + "\n";
String rawData = aprsIsData.convertToString(false) + "\n";
_toAprsIsQueue.put(rawData.getBytes());
}
}
@ -152,7 +152,7 @@ public class AprsIs implements Protocol, Runnable {
private byte[] thirdPartyWrap(AprsIsData aprsIsData) {
// wrap into third party, https://aprs-is.net/IGateDetails.aspx
aprsIsData.digipath = "TCPIP," + _callsign + "*";
String txData = "}" + aprsIsData.toString();
String txData = "}" + aprsIsData.convertToString(false);
return txData.getBytes();
}
@ -208,7 +208,7 @@ public class AprsIs implements Protocol, Runnable {
if (aprsIsData.hasThirdParty()) {
aprsIsData = aprsIsData.thirdParty;
}
String rawData = aprsIsData.toString() + "\n";
String rawData = aprsIsData.convertToString(false) + "\n";
synchronized (_toAprsIsQueue) {
_toAprsIsQueue.put(rawData.getBytes());
}

Wyświetl plik

@ -32,11 +32,13 @@ public class AprsIsData {
}
@NonNull
public String toString() {
public String convertToString(boolean useRawPath) {
String result = src + ">";
if (dst != null && dst.length() > 0)
result += dst;
if (digipath != null && digipath.length() > 0)
if (useRawPath && rawDigipath != null && rawDigipath.length() > 0)
result += "," + rawDigipath;
else if (digipath != null && digipath.length() > 0)
result += "," + digipath;
result += ":" + data;
return result;

Wyświetl plik

@ -33,7 +33,8 @@ public class LogItemHolder extends RecyclerView.ViewHolder implements View.OnCli
DateTools.epochToIso8601(timestamp),
isTransmitting ? "→" : "←",
srcCallsign));
_logItemViewMessage.setText(TextTools.addZeroWidthSpaces(text));
if (text != null)
_logItemViewMessage.setText(TextTools.addZeroWidthSpaces(text));
}
static LogItemHolder create(ViewGroup parent, boolean isClickable) {