From 6f6422186015e372ec314e0a3df557d4ee14cc49 Mon Sep 17 00:00:00 2001 From: ssmipp Date: Fri, 27 Jan 2017 13:55:36 +0200 Subject: Added some Telic events (alarm) #2793 --- src/org/traccar/protocol/TelicProtocolDecoder.java | 90 ++++++++++++++++++---- 1 file changed, 74 insertions(+), 16 deletions(-) diff --git a/src/org/traccar/protocol/TelicProtocolDecoder.java b/src/org/traccar/protocol/TelicProtocolDecoder.java index 4d496426d..a9b794c38 100644 --- a/src/org/traccar/protocol/TelicProtocolDecoder.java +++ b/src/org/traccar/protocol/TelicProtocolDecoder.java @@ -26,6 +26,7 @@ import org.traccar.model.Position; import java.net.SocketAddress; import java.util.regex.Pattern; +import org.traccar.helper.Log; public class TelicProtocolDecoder extends BaseProtocolDecoder { @@ -35,27 +36,27 @@ public class TelicProtocolDecoder extends BaseProtocolDecoder { private static final Pattern PATTERN = new PatternBuilder() .number("dddd") - .number("(d{6})") // device id - .number("(d+),") // type - .number("d{12},") // event time + .number("(d{6})") // device id + .number("(d+),") // type + .number("d{12},") // event time .number("d+,") - .number("(dd)(dd)(dd)") // date - .number("(dd)(dd)(dd),") // time + .number("(dd)(dd)(dd)") // date + .number("(dd)(dd)(dd),") // time .groupBegin() - .number("(ddd)(dd)(dddd),") // longitude - .number("(dd)(dd)(dddd),") // latitude + .number("(ddd)(dd)(dddd),") // longitude + .number("(dd)(dd)(dddd),") // latitude .or() - .number("(-?d+),") // longitude - .number("(-?d+),") // latitude + .number("(-?d+),") // longitude + .number("(-?d+),") // latitude .groupEnd() - .number("(d),") // validity - .number("(d+),") // speed - .number("(d+),") // course - .number("(d+),") // satellites + .number("(d),") // validity + .number("(d+),") // speed + .number("(d+),") // course + .number("(d+),") // satellites .expression("(?:[^,]*,){7}") - .number("(d+),") // battery + .number("(d+),") // battery .expression("[^,]*,") - .number("(d+),") // external + .number("(d+),") // external .any() .compile(); @@ -77,7 +78,11 @@ public class TelicProtocolDecoder extends BaseProtocolDecoder { } position.setDeviceId(deviceSession.getDeviceId()); - position.set(Position.KEY_TYPE, parser.next()); + String eventValue = parser.next(); + position.set(Position.KEY_TYPE, eventValue); + + // alarm + position.set(Position.KEY_ALARM, decodeAlarm(eventValue)); DateBuilder dateBuilder = new DateBuilder() .setDateReverse(parser.nextInt(), parser.nextInt(), parser.nextInt()) @@ -105,4 +110,57 @@ public class TelicProtocolDecoder extends BaseProtocolDecoder { return position; } + private String decodeAlarm(String event) { + + int eventId = 0; + + try { + eventId = Integer.parseInt(event); + } catch (Exception e) { + Log.error("TelicProtocolDecoder: Error parsing event (" + eventId + "): " + e.toString()); + } + + switch (eventId) { + case 1: + return Position.ALARM_POWER_ON; // Power on + case 2: + return Position.ALARM_SOS; // Emergency + case 3: + return null; // Position lock alarm + case 4: + return null; // Alarm Tracking + case 5: + return Position.ALARM_POWER_OFF; // Power off + case 6: + return null; // Course change + case 7: + return Position.ALARM_GEOFENCE_ENTER; // Geofence area enter + case 8: + return Position.ALARM_GEOFENCE_EXIT; // Geofence area exit + case 9: + return null; // GPS fix lost + case 10: + return null; // Periodic wakeup / Routine message + case 13: + return null; // Digital input 2 Low -> High / Charger connected + case 14: + return null; // Digital input 2 High -> Low / Charger disconnected + case 15: + return null; // Digital input 3 Low -> High + case 16: + return null; // Digital input 3 High -> Low + case 21: + return null; // Analog input 1 High / Battery level OK + case 22: + return Position.ALARM_LOW_BATTERY; // Analog input 1 Low / Battery level low + case 25: + return Position.ALARM_MOVEMENT; // Device is moving + case 26: + return null; // Device is stationary + case 29: + return null; // Force GPRS reconnection + default: + return null; + } + } } -- cgit v1.2.3 From 2b5afe7dac4b351c3ff1ba009c2439b4ba6de5f3 Mon Sep 17 00:00:00 2001 From: ssmipp Date: Sat, 28 Jan 2017 08:59:41 +0200 Subject: - restored some original formatting - use parser.nextInt() to get event value --- src/org/traccar/protocol/TelicProtocolDecoder.java | 48 +++++++++------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/src/org/traccar/protocol/TelicProtocolDecoder.java b/src/org/traccar/protocol/TelicProtocolDecoder.java index a9b794c38..6f502bbd1 100644 --- a/src/org/traccar/protocol/TelicProtocolDecoder.java +++ b/src/org/traccar/protocol/TelicProtocolDecoder.java @@ -26,7 +26,6 @@ import org.traccar.model.Position; import java.net.SocketAddress; import java.util.regex.Pattern; -import org.traccar.helper.Log; public class TelicProtocolDecoder extends BaseProtocolDecoder { @@ -36,27 +35,27 @@ public class TelicProtocolDecoder extends BaseProtocolDecoder { private static final Pattern PATTERN = new PatternBuilder() .number("dddd") - .number("(d{6})") // device id - .number("(d+),") // type - .number("d{12},") // event time + .number("(d{6})") // device id + .number("(d+),") // type + .number("d{12},") // event time .number("d+,") - .number("(dd)(dd)(dd)") // date - .number("(dd)(dd)(dd),") // time + .number("(dd)(dd)(dd)") // date + .number("(dd)(dd)(dd),") // time .groupBegin() - .number("(ddd)(dd)(dddd),") // longitude - .number("(dd)(dd)(dddd),") // latitude + .number("(ddd)(dd)(dddd),") // longitude + .number("(dd)(dd)(dddd),") // latitude .or() - .number("(-?d+),") // longitude - .number("(-?d+),") // latitude + .number("(-?d+),") // longitude + .number("(-?d+),") // latitude .groupEnd() - .number("(d),") // validity - .number("(d+),") // speed - .number("(d+),") // course - .number("(d+),") // satellites + .number("(d),") // validity + .number("(d+),") // speed + .number("(d+),") // course + .number("(d+),") // satellites .expression("(?:[^,]*,){7}") - .number("(d+),") // battery + .number("(d+),") // battery .expression("[^,]*,") - .number("(d+),") // external + .number("(d+),") // external .any() .compile(); @@ -78,11 +77,10 @@ public class TelicProtocolDecoder extends BaseProtocolDecoder { } position.setDeviceId(deviceSession.getDeviceId()); - String eventValue = parser.next(); - position.set(Position.KEY_TYPE, eventValue); + int event = parser.nextInt(); + position.set(Position.KEY_TYPE, event); - // alarm - position.set(Position.KEY_ALARM, decodeAlarm(eventValue)); + position.set(Position.KEY_ALARM, decodeAlarm(event)); DateBuilder dateBuilder = new DateBuilder() .setDateReverse(parser.nextInt(), parser.nextInt(), parser.nextInt()) @@ -110,15 +108,7 @@ public class TelicProtocolDecoder extends BaseProtocolDecoder { return position; } - private String decodeAlarm(String event) { - - int eventId = 0; - - try { - eventId = Integer.parseInt(event); - } catch (Exception e) { - Log.error("TelicProtocolDecoder: Error parsing event (" + eventId + "): " + e.toString()); - } + private String decodeAlarm(int eventId) { switch (eventId) { case 1: -- cgit v1.2.3 From 1de3b07256f10332fbf782f9bad3f59c10d1d654 Mon Sep 17 00:00:00 2001 From: ssmipp Date: Sat, 28 Jan 2017 09:00:40 +0200 Subject: - removed some comments --- src/org/traccar/protocol/TelicProtocolDecoder.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/org/traccar/protocol/TelicProtocolDecoder.java b/src/org/traccar/protocol/TelicProtocolDecoder.java index 6f502bbd1..b2c46ff57 100644 --- a/src/org/traccar/protocol/TelicProtocolDecoder.java +++ b/src/org/traccar/protocol/TelicProtocolDecoder.java @@ -112,21 +112,21 @@ public class TelicProtocolDecoder extends BaseProtocolDecoder { switch (eventId) { case 1: - return Position.ALARM_POWER_ON; // Power on + return Position.ALARM_POWER_ON; case 2: - return Position.ALARM_SOS; // Emergency + return Position.ALARM_SOS; case 3: return null; // Position lock alarm case 4: return null; // Alarm Tracking case 5: - return Position.ALARM_POWER_OFF; // Power off + return Position.ALARM_POWER_OFF; case 6: return null; // Course change case 7: - return Position.ALARM_GEOFENCE_ENTER; // Geofence area enter + return Position.ALARM_GEOFENCE_ENTER; case 8: - return Position.ALARM_GEOFENCE_EXIT; // Geofence area exit + return Position.ALARM_GEOFENCE_EXIT; case 9: return null; // GPS fix lost case 10: @@ -142,9 +142,9 @@ public class TelicProtocolDecoder extends BaseProtocolDecoder { case 21: return null; // Analog input 1 High / Battery level OK case 22: - return Position.ALARM_LOW_BATTERY; // Analog input 1 Low / Battery level low + return Position.ALARM_LOW_BATTERY; case 25: - return Position.ALARM_MOVEMENT; // Device is moving + return Position.ALARM_MOVEMENT; case 26: return null; // Device is stationary case 29: -- cgit v1.2.3 From 533a4cd67d8e91c2571cd214efc2d488a376ef93 Mon Sep 17 00:00:00 2001 From: ssmipp Date: Sat, 28 Jan 2017 09:03:14 +0200 Subject: - removed telic events/alarms not available in traccar --- src/org/traccar/protocol/TelicProtocolDecoder.java | 24 ---------------------- 1 file changed, 24 deletions(-) diff --git a/src/org/traccar/protocol/TelicProtocolDecoder.java b/src/org/traccar/protocol/TelicProtocolDecoder.java index b2c46ff57..1560efccc 100644 --- a/src/org/traccar/protocol/TelicProtocolDecoder.java +++ b/src/org/traccar/protocol/TelicProtocolDecoder.java @@ -115,40 +115,16 @@ public class TelicProtocolDecoder extends BaseProtocolDecoder { return Position.ALARM_POWER_ON; case 2: return Position.ALARM_SOS; - case 3: - return null; // Position lock alarm - case 4: - return null; // Alarm Tracking case 5: return Position.ALARM_POWER_OFF; - case 6: - return null; // Course change case 7: return Position.ALARM_GEOFENCE_ENTER; case 8: return Position.ALARM_GEOFENCE_EXIT; - case 9: - return null; // GPS fix lost - case 10: - return null; // Periodic wakeup / Routine message - case 13: - return null; // Digital input 2 Low -> High / Charger connected - case 14: - return null; // Digital input 2 High -> Low / Charger disconnected - case 15: - return null; // Digital input 3 Low -> High - case 16: - return null; // Digital input 3 High -> Low - case 21: - return null; // Analog input 1 High / Battery level OK case 22: return Position.ALARM_LOW_BATTERY; case 25: return Position.ALARM_MOVEMENT; - case 26: - return null; // Device is stationary - case 29: - return null; // Force GPRS reconnection default: return null; } -- cgit v1.2.3