Skip to content

Commit

Permalink
Merge pull request #3 from jackymlr/4.15.1
Browse files Browse the repository at this point in the history
4.15.1
  • Loading branch information
jackymlr committed Mar 29, 2022
2 parents 42285a7 + b0581da commit 0a4de58
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 41 deletions.
18 changes: 9 additions & 9 deletions src/main/java/org/traccar/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,23 +47,23 @@ public static void logSystemInfo() {
try {
OperatingSystemMXBean operatingSystemBean = ManagementFactory.getOperatingSystemMXBean();
LOGGER.info("Operating system"
+ " name: " + operatingSystemBean.getName()
+ " version: " + operatingSystemBean.getVersion()
+ " architecture: " + operatingSystemBean.getArch());
+ " name: " + operatingSystemBean.getName()
+ " version: " + operatingSystemBean.getVersion()
+ " architecture: " + operatingSystemBean.getArch());

RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean();
LOGGER.info("Java runtime"
+ " name: " + runtimeBean.getVmName()
+ " vendor: " + runtimeBean.getVmVendor()
+ " version: " + runtimeBean.getVmVersion());
+ " name: " + runtimeBean.getVmName()
+ " vendor: " + runtimeBean.getVmVendor()
+ " version: " + runtimeBean.getVmVersion());

MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
LOGGER.info("Memory limit"
+ " heap: " + memoryBean.getHeapMemoryUsage().getMax() / (1024 * 1024) + "mb"
+ " non-heap: " + memoryBean.getNonHeapMemoryUsage().getMax() / (1024 * 1024) + "mb");
+ " heap: " + memoryBean.getHeapMemoryUsage().getMax() / (1024 * 1024) + "mb"
+ " non-heap: " + memoryBean.getNonHeapMemoryUsage().getMax() / (1024 * 1024) + "mb");

LOGGER.info("Character encoding: "
+ System.getProperty("file.encoding") + " charset: " + Charset.defaultCharset());
+ System.getProperty("file.encoding") + " charset: " + Charset.defaultCharset());

} catch (Exception error) {
LOGGER.warn("Failed to get system info");
Expand Down
73 changes: 45 additions & 28 deletions src/main/java/org/traccar/protocol/FlexApiProtocolDecoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,12 @@
import org.traccar.model.Position;

import javax.json.Json;
import javax.json.JsonNumber;
import javax.json.JsonObject;
import java.io.StringReader;
import java.net.SocketAddress;
import java.util.Date;
import java.util.Optional;

public class FlexApiProtocolDecoder extends BaseProtocolDecoder {

Expand Down Expand Up @@ -56,33 +58,44 @@ protected Object decode(

if (topic.contains("/gnss/")) {

position.setValid(true);

if (payload.containsKey("time")) {
position.setTime(new Date(payload.getInt("time") * 1000L));
position.setLatitude(payload.getJsonNumber("lat").doubleValue());
position.setLongitude(payload.getJsonNumber("log").doubleValue());
if (payload.getInt("gnss.fix") > 0) {
position.setValid(true);
if (payload.containsKey("time")) {
position.setTime(new Date(payload.getInt("time") * 1000L));
position.setLatitude(payload.getJsonNumber("lat").doubleValue());
position.setLongitude(payload.getJsonNumber("log").doubleValue());
} else {
position.setTime(new Date(payload.getInt("gnss.ts") * 1000L));
position.setLatitude(payload.getJsonNumber("gnss.latitude").doubleValue());
position.setLongitude(payload.getJsonNumber("gnss.longitude").doubleValue());
}
Optional.ofNullable(payload.getJsonNumber("gnss.altitude"))
.map(JsonNumber::doubleValue).ifPresent(position::setAltitude);
Optional.ofNullable(payload.getJsonNumber("gnss.speed"))
.map(JsonNumber::doubleValue).ifPresent(position::setSpeed);
Optional.ofNullable(payload.getJsonNumber("gnss.heading"))
.map(JsonNumber::doubleValue).ifPresent(position::setCourse);
Optional.ofNullable(payload.getJsonNumber("gnss.num_sv"))
.map(JsonNumber::intValue).ifPresent(value -> position.set(Position.KEY_SATELLITES, value));
Optional.ofNullable(payload.getJsonNumber("gnss.hdop"))
.map(JsonNumber::doubleValue).ifPresent(value -> position.set(Position.KEY_HDOP, value));
} else {
position.setTime(new Date(payload.getInt("gnss.ts") * 1000L));
position.setLatitude(payload.getJsonNumber("gnss.latitude").doubleValue());
position.setLongitude(payload.getJsonNumber("gnss.longitude").doubleValue());
position.setValid(false);
Optional.ofNullable(payload.getJsonNumber("gnss.num_sv"))
.map(JsonNumber::intValue).ifPresent(value -> position.set(Position.KEY_SATELLITES, value));
position.setTime(new Date());
}

position.setValid(payload.getInt("gnss.fix") > 0);
position.setAltitude(payload.getJsonNumber("gnss.altitude").doubleValue());
position.setSpeed(payload.getJsonNumber("gnss.speed").doubleValue());
position.setCourse(payload.getJsonNumber("gnss.heading").doubleValue());

position.set(Position.KEY_SATELLITES, payload.getInt("gnss.num_sv"));
position.set(Position.KEY_HDOP, payload.getJsonNumber("gnss.hdop").doubleValue());

} else if (topic.contains("/cellular1/")) {

getLastLocation(position, new Date(payload.getInt("modem1.ts") * 1000L));

position.set("imei", payload.getString("modem1.imei"));
position.set("imsi", payload.getString("modem1.imsi"));
position.set(Position.KEY_ICCID, payload.getString("modem1.iccid"));
Optional.ofNullable(payload.getString("modem1.imei"))
.ifPresent(value -> position.set("imei", value));
Optional.ofNullable(payload.getString("modem1.imsi"))
.ifPresent(value -> position.set("imsi", value));
Optional.ofNullable(payload.getString("modem1.iccid"))
.ifPresent(value -> position.set(Position.KEY_ICCID, value));

String operator = payload.getString("modem1.operator");
if (!operator.isEmpty()) {
Expand Down Expand Up @@ -134,14 +147,18 @@ protected Object decode(
} else if (topic.contains("/motion/")) {

getLastLocation(position, new Date(payload.getInt("motion.ts") * 1000L));

position.set("ax", payload.getJsonNumber("motion.ax").doubleValue());
position.set("ay", payload.getJsonNumber("motion.ay").doubleValue());
position.set("az", payload.getJsonNumber("motion.az").doubleValue());
position.set("gx", payload.getJsonNumber("motion.gx").doubleValue());
position.set("gy", payload.getJsonNumber("motion.gy").doubleValue());
position.set("gz", payload.getJsonNumber("motion.gz").doubleValue());

Optional.ofNullable(payload.getJsonNumber("motion.ax"))
.map(JsonNumber::doubleValue).ifPresent(value -> position.set("ax", value));
Optional.ofNullable(payload.getJsonNumber("motion.ay"))
.map(JsonNumber::doubleValue).ifPresent(value -> position.set("ay", value));
Optional.ofNullable(payload.getJsonNumber("motion.az"))
.map(JsonNumber::doubleValue).ifPresent(value -> position.set("az", value));
Optional.ofNullable(payload.getJsonNumber("motion.gx"))
.map(JsonNumber::doubleValue).ifPresent(value -> position.set("gx", value));
Optional.ofNullable(payload.getJsonNumber("motion.gy"))
.map(JsonNumber::doubleValue).ifPresent(value -> position.set("gy", value));
Optional.ofNullable(payload.getJsonNumber("motion.gz"))
.map(JsonNumber::doubleValue).ifPresent(value -> position.set("gz", value));
} else if (topic.contains("/io/")) {

getLastLocation(position, new Date(payload.getInt("io.ts") * 1000L));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,10 @@ public void testDecode() throws Exception {

verifyAttributes(decoder, text(
"${\"topic\":\"v1/VF3102021111601/sysinfo/info\",\"payload\":{\"sysinfo.ts\":1637224740,\"sysinfo.model_name\":\"310\",\"sysinfo.oem_name\":\"inhand\",\"sysinfo.serial_number\":\"VF3102021111601\",\"sysinfo.firmware_version\":\"VT3_V1.1.32\",\"sysinfo.product_number\":\"FQ58\",\"sysinfo.description\":\"www.inhand.com.cn\"}}xx"));

verifyAttributes(decoder, text(
"${\"topic\":\"v1/VF3102021111601/io/info\",\"payload\":{\"io.ts\":1637227722,\"io.AI1\":0,\"io.DI1\":1,\"io.DI2\":0,\"io.DI3\":0,\"io.DI4\":0,\"io.DI1_pullup\":0,\"io.DI2_pullup\":0,\"io.DI3_pullup\":0,\"io.DI4_pullup\":0,\"io.DO1\":0,\"io.DO2\":0,\"io.DO3\":0,\"io.IGT\":1}}xx"));

verifyAttributes(decoder, text(
"${\"topic\":\"v1/VF3102021111601/cellular1/info\",\"payload\":{\"modem1.ts\":1637225330,\"modem1.imei\":\"863674047324999\",\"modem1.imsi\":\"460111150414721\",\"modem1.iccid\":\"89860319482086580401\",\"modem1.phone_num\":\"\",\"modem1.signal_lvl\":25,\"modem1.reg_status\":1,\"modem1.operator\":\"46011\",\"modem1.network\":3,\"modem1.lac\":\"EA00\",\"modem1.cell_id\":\"E779B81\",\"modem1.rssi\":0,\"modem1.rsrp\":0,\"modem1.rsrq\":0,\"cellular1.status\":3,\"cellular1.ip\":\"10.136.143.193\",\"cellular1.netmask\":\"255.255.255.255\",\"cellular1.gateway\":\"10.64.64.64\",\"cellular1.dns1\":\"223.5.5.5\",\"cellular1.up_at\":450}}xx"));
verifyAttributes(decoder, text(
"${\"topic\": \"v1/VG7102021110801/io/info\", \"payload\": {\"io.ts\": 1646641456, \"io.DI1\": 0, \"io.DI2\": 0, \"io.DI3\": 0, \"io.DI4\": 0, \"io.DI1_pullup\": 0, \"io.DI2_pullup\": 0, \"io.DI3_pullup\": 0, \"io.DI4_pullup\": 0}}ن\n"));

}

Expand Down

0 comments on commit 0a4de58

Please sign in to comment.