aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-10-04 18:53:33 -0700
committerAnton Tananaev <anton@traccar.org>2022-10-04 18:53:33 -0700
commitbcd0d17008c2c3e3ccede34a618feac53b199d02 (patch)
tree9400b02540f274423c740e1b036406e94df0e4a0 /src/main
parent471de2a758b063cc8d6dd5321cbc459c70b88fd8 (diff)
downloadtrackermap-server-bcd0d17008c2c3e3ccede34a618feac53b199d02.tar.gz
trackermap-server-bcd0d17008c2c3e3ccede34a618feac53b199d02.tar.bz2
trackermap-server-bcd0d17008c2c3e3ccede34a618feac53b199d02.zip
Concox Vl502 IMEI device id
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/traccar/protocol/HuabaoProtocolDecoder.java15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main/java/org/traccar/protocol/HuabaoProtocolDecoder.java b/src/main/java/org/traccar/protocol/HuabaoProtocolDecoder.java
index 0639b9dcf..0eded4b42 100644
--- a/src/main/java/org/traccar/protocol/HuabaoProtocolDecoder.java
+++ b/src/main/java/org/traccar/protocol/HuabaoProtocolDecoder.java
@@ -160,6 +160,17 @@ public class HuabaoProtocolDecoder extends BaseProtocolDecoder {
return dateBuilder.getDate();
}
+ private String decodeId(ByteBuf id) {
+ String serial = ByteBufUtil.hexDump(id);
+ if (serial.matches("[0-9]+")) {
+ return serial;
+ } else {
+ long imei = id.readUnsignedShort();
+ imei = (imei << 32) + id.readUnsignedInt();
+ return String.valueOf(imei);
+ }
+ }
+
@Override
protected Object decode(
Channel channel, SocketAddress remoteAddress, Object msg) throws Exception {
@@ -193,7 +204,7 @@ public class HuabaoProtocolDecoder extends BaseProtocolDecoder {
index = buf.readUnsignedShort();
}
- DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, ByteBufUtil.hexDump(id));
+ DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, decodeId(id));
if (deviceSession == null) {
return null;
}
@@ -208,7 +219,7 @@ public class HuabaoProtocolDecoder extends BaseProtocolDecoder {
ByteBuf response = Unpooled.buffer();
response.writeShort(index);
response.writeByte(RESULT_SUCCESS);
- response.writeBytes(ByteBufUtil.hexDump(id).getBytes(StandardCharsets.US_ASCII));
+ response.writeBytes(decodeId(id).getBytes(StandardCharsets.US_ASCII));
channel.writeAndFlush(new NetworkMessage(
formatMessage(MSG_TERMINAL_REGISTER_RESPONSE, id, false, response), remoteAddress));
}