aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/protocol/T800xProtocolDecoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/traccar/protocol/T800xProtocolDecoder.java')
-rw-r--r--src/main/java/org/traccar/protocol/T800xProtocolDecoder.java61
1 files changed, 11 insertions, 50 deletions
diff --git a/src/main/java/org/traccar/protocol/T800xProtocolDecoder.java b/src/main/java/org/traccar/protocol/T800xProtocolDecoder.java
index b15688df0..72b277c8c 100644
--- a/src/main/java/org/traccar/protocol/T800xProtocolDecoder.java
+++ b/src/main/java/org/traccar/protocol/T800xProtocolDecoder.java
@@ -58,8 +58,6 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
public static final int MSG_DRIVER_BEHAVIOR_1 = 0x05; // 0x2626
public static final int MSG_DRIVER_BEHAVIOR_2 = 0x06; // 0x2626
public static final int MSG_BLE = 0x10;
- public static final int MSG_GPS_2 = 0x13;
- public static final int MSG_ALARM_2 = 0x14;
public static final int MSG_COMMAND = 0x81;
private void sendResponse(Channel channel, short header, int type, int index, ByteBuf imei, int alarm) {
@@ -77,7 +75,7 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
}
}
- private String decodeAlarm1(int value) {
+ private String decodeAlarm(int value) {
switch (value) {
case 1:
return Position.ALARM_POWER_CUT;
@@ -107,28 +105,6 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
}
}
- private String decodeAlarm2(int value) {
- switch (value) {
- case 1:
- case 4:
- return Position.ALARM_REMOVING;
- case 2:
- return Position.ALARM_TAMPERING;
- case 3:
- return Position.ALARM_SOS;
- case 5:
- return Position.ALARM_FALL_DOWN;
- case 6:
- return Position.ALARM_LOW_BATTERY;
- case 14:
- return Position.ALARM_GEOFENCE_ENTER;
- case 15:
- return Position.ALARM_GEOFENCE_EXIT;
- default:
- return null;
- }
- }
-
private Date readDate(ByteBuf buf) {
return new DateBuilder()
.setYear(BcdUtil.readInteger(buf, 2))
@@ -158,12 +134,11 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
return null;
}
- boolean positionType = type == MSG_GPS || type == MSG_GPS_2 || type == MSG_ALARM || type == MSG_ALARM_2;
- if (!positionType) {
+ if (type != MSG_GPS && type != MSG_ALARM) {
sendResponse(channel, header, type, index, imei, 0);
}
- if (positionType) {
+ if (type == MSG_GPS || type == MSG_ALARM) {
return decodePosition(channel, deviceSession, buf, type, index, imei);
@@ -254,11 +229,6 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
return null;
}
- private double decodeBleTemp(ByteBuf buf) {
- int value = buf.readUnsignedShort();
- return (BitUtil.check(value, 15) ? -BitUtil.to(value, 15) : BitUtil.to(value, 15)) * 0.01;
- }
-
private Position decodeBle(
Channel channel, DeviceSession deviceSession, ByteBuf buf, int type, int index, ByteBuf imei) {
@@ -308,7 +278,7 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
position.set("tag" + i + "Id", ByteBufUtil.hexDump(buf.readSlice(6)));
position.set("tag" + i + "Battery", buf.readUnsignedByte() * 0.01 + 2);
buf.readUnsignedByte(); // battery level
- position.set("tag" + i + "Temp", decodeBleTemp(buf));
+ position.set("tag" + i + "Temp", buf.readUnsignedShort() * 0.01);
position.set("tag" + i + "Humidity", buf.readUnsignedShort() * 0.01);
position.set("tag" + i + "LightSensor", buf.readUnsignedShort());
position.set("tag" + i + "Rssi", buf.readUnsignedByte() - 128);
@@ -317,7 +287,7 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
position.set("tag" + i + "Id", ByteBufUtil.hexDump(buf.readSlice(6)));
position.set("tag" + i + "Battery", buf.readUnsignedByte() * 0.01 + 2);
buf.readUnsignedByte(); // battery level
- position.set("tag" + i + "Temp", decodeBleTemp(buf));
+ position.set("tag" + i + "Temp", buf.readUnsignedShort() * 0.01);
position.set("tag" + i + "Door", buf.readUnsignedByte() > 0);
position.set("tag" + i + "Rssi", buf.readUnsignedByte() - 128);
break;
@@ -373,19 +343,12 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
position.set("ac", BitUtil.check(io, 13));
position.set(Position.PREFIX_IN + 3, BitUtil.check(io, 12));
position.set(Position.PREFIX_IN + 4, BitUtil.check(io, 11));
-
- if (type == MSG_GPS_2 || type == MSG_ALARM_2) {
- position.set(Position.KEY_OUTPUT, buf.readUnsignedByte());
- buf.readUnsignedByte(); // reserved
- } else {
- position.set(Position.PREFIX_OUT + 1, BitUtil.check(io, 7));
- position.set(Position.PREFIX_OUT + 2, BitUtil.check(io, 8));
- position.set(Position.PREFIX_OUT + 3, BitUtil.check(io, 9));
- }
+ position.set(Position.PREFIX_OUT + 1, BitUtil.check(io, 7));
+ position.set(Position.PREFIX_OUT + 2, BitUtil.check(io, 8));
+ position.set(Position.PREFIX_OUT + 3, BitUtil.check(io, 9));
if (header != 0x2626) {
- int adcCount = type == MSG_GPS_2 || type == MSG_ALARM_2 ? 5 : 2;
- for (int i = 1; i <= adcCount; i++) {
+ for (int i = 1; i <= 2; i++) {
String value = ByteBufUtil.hexDump(buf.readSlice(2));
if (!value.equals("ffff")) {
position.set(Position.PREFIX_ADC + i, Integer.parseInt(value) * 0.01);
@@ -396,7 +359,7 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
}
int alarm = buf.readUnsignedByte();
- position.set(Position.KEY_ALARM, header != 0x2727 ? decodeAlarm1(alarm) : decodeAlarm2(alarm));
+ position.set(Position.KEY_ALARM, decodeAlarm(alarm));
if (header != 0x2727) {
@@ -510,9 +473,7 @@ public class T800xProtocolDecoder extends BaseProtocolDecoder {
}
}
- if (type == MSG_ALARM || type == MSG_ALARM_2) {
- sendResponse(channel, header, type, index, imei, alarm);
- }
+ sendResponse(channel, header, type, index, imei, alarm);
return position;
}