aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/protocol
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/traccar/protocol')
-rw-r--r--src/main/java/org/traccar/protocol/RuptelaProtocolDecoder.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/org/traccar/protocol/RuptelaProtocolDecoder.java b/src/main/java/org/traccar/protocol/RuptelaProtocolDecoder.java
index 649de7c5c..d4f9808ae 100644
--- a/src/main/java/org/traccar/protocol/RuptelaProtocolDecoder.java
+++ b/src/main/java/org/traccar/protocol/RuptelaProtocolDecoder.java
@@ -51,6 +51,7 @@ public class RuptelaProtocolDecoder extends BaseProtocolDecoder {
public static final int MSG_SMS_VIA_GPRS = 8;
public static final int MSG_DTCS = 9;
public static final int MSG_IDENTIFICATION = 15;
+ public static final int MSG_HEARTBEAT = 16;
public static final int MSG_SET_IO = 17;
public static final int MSG_FILES = 37;
public static final int MSG_EXTENDED_RECORDS = 68;
@@ -242,7 +243,11 @@ public class RuptelaProtocolDecoder extends BaseProtocolDecoder {
int currentRecord = BitUtil.to(recordExtension, 4);
if (currentRecord > 0 && currentRecord <= mergeRecordCount) {
- position = positions.remove(positions.size() - 1);
+ if (positions.size() == 0) {
+ getLastLocation(position, null);
+ } else {
+ position = positions.remove(positions.size() - 1);
+ }
}
}
@@ -388,7 +393,7 @@ public class RuptelaProtocolDecoder extends BaseProtocolDecoder {
return null;
- } else if (type == MSG_IDENTIFICATION) {
+ } else if (type == MSG_IDENTIFICATION || type == MSG_HEARTBEAT) {
ByteBuf content = Unpooled.buffer();
content.writeByte(1);