Handle auto reply messages

master
sh123 2023-07-16 11:12:55 +03:00
rodzic 1edf1c4c51
commit 854bd629da
4 zmienionych plików z 28 dodań i 4 usunięć

Wyświetl plik

@ -299,7 +299,11 @@ public class AppWorker extends Thread {
String note = (textMessage.src == null ? "UNK" : textMessage.src) + "→" +
(textMessage.dst == null ? "UNK" : textMessage.dst);
sendStatusUpdate(AppMessage.EV_TEXT_MESSAGE_RECEIVED, note + ": " + textMessage.text);
_messageItemRepository.insertMessageItem(textMessage.toMessageItem(false));
if (textMessage.isAutoReply()) {
// TODO, acknowledge or reject message with the given (src, dst, ackId)
} else {
_messageItemRepository.insertMessageItem(textMessage.toMessageItem(false));
}
Log.i(TAG, "message received: " + textMessage.text);
}
@ -342,7 +346,9 @@ public class AppWorker extends Thread {
String note = (textMessage.src == null ? "UNK" : textMessage.src) + "→" +
(textMessage.dst == null ? "UNK" : textMessage.dst);
sendStatusUpdate(AppMessage.EV_TEXT_MESSAGE_TRANSMITTED, note);
_messageItemRepository.insertMessageItem(textMessage.toMessageItem(true));
if (!textMessage.isAutoReply()) {
_messageItemRepository.insertMessageItem(textMessage.toMessageItem(true));
}
}
@Override

Wyświetl plik

@ -2,6 +2,8 @@ package com.radio.codec2talkie.protocol.message;
import com.radio.codec2talkie.storage.message.MessageItem;
import java.util.Locale;
public class TextMessage {
public String src;
public String dst;
@ -21,4 +23,20 @@ public class TextMessage {
messageItem.setRetryCnt(0);
return messageItem;
}
public boolean isAck() {
return this.text != null &&
this.text.toLowerCase(Locale.ROOT).equals("ack") &&
this.ackId > 0;
}
public boolean isRej() {
return this.text != null &&
this.text.toLowerCase(Locale.ROOT).equals("rej") &&
this.ackId > 0;
}
public boolean isAutoReply() {
return isAck() || isRej();
}
}

Wyświetl plik

@ -20,7 +20,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@androidx.room.Database(
version = 12,
version = 13,
entities = {LogItem.class, MessageItem.class, PositionItem.class, StationItem.class},
exportSchema = false
)

Wyświetl plik

@ -4,7 +4,7 @@ import androidx.room.Entity;
import androidx.room.Index;
import androidx.room.PrimaryKey;
@Entity(indices = {@Index(value = {"id", "srcCallsign", "ackId"}, unique = true)})
@Entity(indices = {@Index(value = {"id", "srcCallsign", "dstCallsign", "ackId"}, unique = true)})
public class MessageItem {
@PrimaryKey(autoGenerate = true)