From a11be97deeba6d2b69a8870518bd47bdcd4dda64 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 2 Oct 2024 15:50:11 -0700 Subject: [PATCH] Fix Lantrix ACK (fix #5394) --- .../java/org/traccar/protocol/TaipProtocolDecoder.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/traccar/protocol/TaipProtocolDecoder.java b/src/main/java/org/traccar/protocol/TaipProtocolDecoder.java index c09888011a5..4211bc99c06 100644 --- a/src/main/java/org/traccar/protocol/TaipProtocolDecoder.java +++ b/src/main/java/org/traccar/protocol/TaipProtocolDecoder.java @@ -301,11 +301,14 @@ private Position decodeAttributes( response = ">SAK;ID=" + uniqueId + ";" + messageIndex + "<"; } else { if (indexFirst) { - response = ">ACK;" + messageIndex + ";ID=" + uniqueId + ";*"; + response = ">ACK;" + messageIndex + ";ID=" + uniqueId + ";"; } else { - response = ">ACK;ID=" + uniqueId + ";" + messageIndex + ";*"; + response = ">ACK;ID=" + uniqueId + ";" + messageIndex + ";"; } - response += String.format("%02X", Checksum.xor(response)) + "<"; + String model = getDeviceModel(deviceSession); + boolean lantrix = model != null && model.toUpperCase().startsWith("LANTRIX"); + int checksum = Checksum.xor(lantrix ? response : response + "*"); + response += String.format("*%02X", checksum) + "<"; } channel.writeAndFlush(new NetworkMessage(response, remoteAddress)); } else {