aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--setup/default.xml1
-rw-r--r--src/main/java/org/traccar/protocol/DolphinProtocol.java35
-rw-r--r--src/main/java/org/traccar/protocol/DolphinProtocolDecoder.java95
-rw-r--r--src/main/proto/DolphinConfig.proto1319
-rw-r--r--src/main/proto/DolphinMessages.proto511
-rw-r--r--src/test/java/org/traccar/protocol/DolphinProtocolDecoderTest.java20
6 files changed, 1981 insertions, 0 deletions
diff --git a/setup/default.xml b/setup/default.xml
index c9d8a4660..d5f0b46df 100644
--- a/setup/default.xml
+++ b/setup/default.xml
@@ -295,5 +295,6 @@
<entry key='mobilogix.port'>5216</entry>
<entry key='swiftech.port'>5217</entry>
<entry key='iotm.port'>5218</entry>
+ <entry key='dolphin.port'>5219</entry>
</properties>
diff --git a/src/main/java/org/traccar/protocol/DolphinProtocol.java b/src/main/java/org/traccar/protocol/DolphinProtocol.java
new file mode 100644
index 000000000..e914059c7
--- /dev/null
+++ b/src/main/java/org/traccar/protocol/DolphinProtocol.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020 Anton Tananaev (anton@traccar.org)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.traccar.protocol;
+
+import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
+import org.traccar.BaseProtocol;
+import org.traccar.PipelineBuilder;
+import org.traccar.TrackerServer;
+
+public class DolphinProtocol extends BaseProtocol {
+
+ public DolphinProtocol() {
+ addServer(new TrackerServer(false, getName()) {
+ @Override
+ protected void addProtocolHandlers(PipelineBuilder pipeline) {
+ pipeline.addLast(new LengthFieldBasedFrameDecoder(1024, 20, 4));
+ pipeline.addLast(new DolphinProtocolDecoder(DolphinProtocol.this));
+ }
+ });
+ }
+
+}
diff --git a/src/main/java/org/traccar/protocol/DolphinProtocolDecoder.java b/src/main/java/org/traccar/protocol/DolphinProtocolDecoder.java
new file mode 100644
index 000000000..56d9314b2
--- /dev/null
+++ b/src/main/java/org/traccar/protocol/DolphinProtocolDecoder.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2020 Anton Tananaev (anton@traccar.org)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.traccar.protocol;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufUtil;
+import io.netty.channel.Channel;
+import org.traccar.BaseProtocolDecoder;
+import org.traccar.DeviceSession;
+import org.traccar.Protocol;
+import org.traccar.helper.UnitsConverter;
+import org.traccar.model.Position;
+import org.traccar.protobuf.dolphin.Messages.DolphinMessages;
+
+import java.net.SocketAddress;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+public class DolphinProtocolDecoder extends BaseProtocolDecoder {
+
+ public DolphinProtocolDecoder(Protocol protocol) {
+ super(protocol);
+ }
+
+ @Override
+ protected Object decode(
+ Channel channel, SocketAddress remoteAddress, Object msg) throws Exception {
+
+ ByteBuf buf = (ByteBuf) msg;
+
+ buf.readUnsignedShort(); // header
+ buf.readUnsignedIntLE(); // index
+ buf.readUnsignedShort(); // version
+ buf.readUnsignedShort(); // flags
+ int type = buf.readUnsignedShortLE();
+
+ DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, String.valueOf(buf.readLongLE()));
+ if (deviceSession == null) {
+ return null;
+ }
+
+ int length = (int) buf.readUnsignedIntLE();
+ buf.readUnsignedInt(); // reserved
+
+ if (type == DolphinMessages.MessageType.DataPack_Request.getNumber()) {
+
+ DolphinMessages.DataPackRequest message = DolphinMessages.DataPackRequest.parseFrom(
+ ByteBufUtil.getBytes(buf, buf.readerIndex(), length, false));
+
+ List<Position> positions = new LinkedList<>();
+
+ for (int i = 0; i < message.getPointsCount(); i++) {
+
+ Position position = new Position(getProtocolName());
+ position.setDeviceId(deviceSession.getDeviceId());
+
+ DolphinMessages.DataPoint point = message.getPoints(i);
+
+ position.setValid(true);
+ position.setTime(new Date(point.getTimestamp() * 1000L));
+ position.setLatitude(point.getLatitude());
+ position.setLongitude(point.getLongitude());
+ position.setAltitude(point.getAltitude());
+ position.setSpeed(UnitsConverter.knotsFromKph(point.getSpeed()));
+ position.setCourse(point.getBearing());
+
+ position.set(Position.KEY_SATELLITES, point.getSatellites());
+ position.set(Position.KEY_HDOP, point.getHDOP());
+
+ positions.add(position);
+
+ }
+
+ return positions;
+
+ }
+
+ return null;
+ }
+
+}
diff --git a/src/main/proto/DolphinConfig.proto b/src/main/proto/DolphinConfig.proto
new file mode 100644
index 000000000..589f940fd
--- /dev/null
+++ b/src/main/proto/DolphinConfig.proto
@@ -0,0 +1,1319 @@
+syntax = "proto3";
+
+package org.traccar.protobuf.dolphin.Config;
+option go_package = "dolphindevice";
+
+// begin: Config ---------------------------------------------
+
+message Config {
+ SerialBaudrate SerialPort_Baudrate = 80;
+ bool DoNotResetDeviceOnProblems = 90;
+ string Password = 99;
+
+ /* Movement */
+ MovementSource Movement = 100;
+ uint32 MovementSensorSensitivity = 101;
+
+ /* Sleep */
+ SleepMode Sleep = 102;
+ uint32 SleepTimeout = 103;
+
+ /* Engine state (Ignition) */
+ EngineMode EngineOn = 104;
+
+ /* EngineOn conditions */
+ bool EngineOn_DIN1 = 105;
+ bool EngineOn_DIN2 = 106;
+ bool EngineOn_MovementSensor = 107;
+ bool EngineOn_PowerSupplyAvailable = 108;
+ uint32 EngineOn_GpsSpeed = 109;
+ uint32 EngineOn_CanRPM = 110;
+ uint32 EngineOn_MinActiveStateDuration = 111;
+ ConditionOperator EngineOn_Operator = 112;
+ uint32 EngineOn_MovementStartDelay = 113;
+ uint32 EngineOn_MovementStopDelay = 114;
+ uint32 EngineOn_ExternalVoltage = 115;
+
+ bool LedIndication = 116;
+
+ /* GPS/GNSS Mode */
+ GNSSMode GNSS = 117;
+
+ /* Static navigation */
+ bool StaticNavigation_Enabled = 118;
+ StaticNavigationSource StaticNavigation_Source = 119;
+
+ /* Records saving/sending without time synchronization */
+ RecordsMode RecordsSaveAndSendMode = 120;
+ TimeSynchronization TimeSynchronization = 121;
+ string NTPServer = 122;
+ uint32 NTPInterval = 123;
+
+ uint32 Sleep_NoPowerTimeout = 125;
+
+ bool SendPing = 130;
+
+ /* Data acquisition */
+ bool TimetableMode = 140;
+ bytes TimetableData = 141;
+
+ // Service
+ Service Service_1 = 200;
+ Service Service_2 = 201;
+ Service Service_3 = 202;
+ // Service Service_4 = 203;
+ // Service Service_5 = 204;
+
+ /* IO config */
+ uint32 AnalogInput1_AverageTime = 700;
+ uint32 AnalogInput2_AverageTime = 701;
+ uint32 AnalogInput3_AverageTime = 702;
+
+ /* Bluetooth */
+ BluetoothMode Bluetooth_RadioMode = 800;
+ string Bluetooth_Name = 801;
+ string Bluetooth_PIN = 802;
+ BluetoothSecurityMode Bluetooth_SecurityMode = 803;
+ bool Bluetooth_PowerDownOnSleep = 804;
+
+ BluetoothExternalConnectionMode Bluetooth_ExternalConnectionMode = 810;
+ string Bluetooth_ExternalDevice_MAC = 811;
+ string Bluetooth_ExternalDevice_Name = 812;
+ string Bluetooth_ExternalDevice_PIN = 813;
+
+ string Bluetooth_AuthorizedMAC1 = 820;
+ string Bluetooth_AuthorizedMAC2 = 821;
+ string Bluetooth_AuthorizedMAC3 = 822;
+ string Bluetooth_AuthorizedMAC4 = 823;
+ string Bluetooth_AuthorizedMAC5 = 824;
+
+ /* Connection ------------ */
+ /* APN */
+ bool GPRS_ContextEnabled = 2001;
+ string GPRS_ApnName = 2002;
+ string GPRS_ApnUsername = 2003;
+ string GPRS_ApnPassword = 2004;
+ bool GPRS_CHAPAuthentication = 2005;
+
+ uint32 GPRS_LinkTimeout = 2006;
+ uint32 GPRS_ResponseTimeout = 2007;
+
+ /* Main Server configurations */
+ string GPRS_ServerAddress = 2008 ;
+ uint32 GPRS_ServerPort = 2009;
+ ServerProtocol GPRS_ServerProtocol = 2010;
+
+ /* Backup server configurations */
+ string GPRS_BackupServerAddress = 2011;
+ uint32 GPRS_BackupServerPort = 2012;
+ ServerProtocol GPRS_BackupServerProtocol = 2013;
+
+ // SSL
+ bool GPRS_SSL_ClientAuthentication = 2020;
+
+ bool GPRS_DataCompression = 2030;
+
+ AuthenticationMode Authentication_Mode = 2035;
+ string Authentication_Code = 2036;
+
+ // Firmware update server
+ bool FirmwareUpdate_Enabled = 2040;
+ string FirmwareUpdate_Channel = 2041;
+ uint32 FirmwareUpdate_CheckInterval = 2042;
+
+ string FirmwareUpdate_ServerAddress = 2045;
+ uint32 FirmwareUpdate_ServerPort = 2046;
+ ServerProtocol FirmwareUpdate_ServerProtocol = 2047;
+ uint32 FirmwareUpdate_LinkTimeout = 2048;
+ uint32 FirmwareUpdate_ResponseTimeout = 2049;
+
+ /* SMS / Call settings */
+ bool SMS_DataSending = 3000;
+ string SMS_DataSendNumber = 3001;
+ string SMS_Password = 3002;
+ int32 SMS_EventTimeZone = 3003;
+
+ CallAction Call_IncommingCallAction = 3051;
+
+ uint32 Call_DigitalInput1_CallTo = 3055;
+ uint32 Call_DigitalInput2_CallTo = 3056;
+ uint32 Call_DigitalInput3_CallTo = 3057;
+
+ /* Authorized numbers */
+ string AuthorizedNumber1 = 3100;
+ string AuthorizedNumber2 = 3101;
+ string AuthorizedNumber3 = 3102;
+ string AuthorizedNumber4 = 3103;
+ string AuthorizedNumber5 = 3104;
+ string AuthorizedNumber6 = 3105;
+ string AuthorizedNumber7 = 3106;
+ string AuthorizedNumber8 = 3107;
+ string AuthorizedNumber9 = 3108;
+ string AuthorizedNumber10 = 3109;
+ reserved 3110 to 3149;
+
+ string GsmPredefinedNumber1 = 3200;
+ string GsmPredefinedNumber2 = 3201;
+ string GsmPredefinedNumber3 = 3202;
+ string GsmPredefinedNumber4 = 3203;
+ string GsmPredefinedNumber5 = 3204;
+ string GsmPredefinedNumber6 = 3205;
+ string GsmPredefinedNumber7 = 3206;
+ string GsmPredefinedNumber8 = 3207;
+ string GsmPredefinedNumber9 = 3208;
+ string GsmPredefinedNumber10 = 3209;
+
+ string RoamingOperator1 = 5000;
+ string RoamingOperator2 = 5001;
+ string RoamingOperator3 = 5002;
+ string RoamingOperator4 = 5003;
+ string RoamingOperator5 = 5004;
+ reserved 5005 to 5049;
+
+ /* Data acquisition on Stop mode */
+ uint32 DAQ_Stop_Home_MinPeriod = 10000;
+
+ uint32 DAQ_Stop_Roaming_MinPeriod = 10100;
+
+ /* Data acquisition on Moving mode */
+ uint32 DAQ_Moving_Home_MinPeriod = 10050;
+ uint32 DAQ_Moving_Home_MinPathDeviation = 10051;
+
+ uint32 DAQ_Moving_Roaming_MinPeriod = 10150;
+ uint32 DAQ_Moving_Roaming_MinPathDeviation = 10151;
+
+ /* Geofencing */
+ GeoZone GeoZone1 = 20000;
+ GeoZone GeoZone2 = 20020;
+ GeoZone GeoZone3 = 20040;
+ GeoZone GeoZone4 = 20060;
+ GeoZone GeoZone5 = 20080;
+ GeoZone GeoZone6 = 20100;
+ GeoZone GeoZone7 = 20120;
+ GeoZone GeoZone8 = 20140;
+ GeoZone GeoZone9 = 20160;
+ GeoZone GeoZone10 = 20180;
+ GeoZone GeoZone11 = 20200;
+ GeoZone GeoZone12 = 20220;
+ GeoZone GeoZone13 = 20240;
+ GeoZone GeoZone14 = 20260;
+ GeoZone GeoZone15 = 20280;
+ GeoZone GeoZone16 = 20300;
+ GeoZone GeoZone17 = 20320;
+ GeoZone GeoZone18 = 20340;
+ GeoZone GeoZone19 = 20360;
+ GeoZone GeoZone20 = 20380;
+ GeoZone GeoZone21 = 20400;
+ GeoZone GeoZone22 = 20420;
+ GeoZone GeoZone23 = 20440;
+ GeoZone GeoZone24 = 20460;
+ GeoZone GeoZone25 = 20480;
+ GeoZone GeoZone26 = 20500;
+ GeoZone GeoZone27 = 20520;
+ GeoZone GeoZone28 = 20540;
+ GeoZone GeoZone29 = 20560;
+ GeoZone GeoZone30 = 20580;
+ GeoZone GeoZone31 = 20600;
+ GeoZone GeoZone32 = 20620;
+ GeoZone GeoZone33 = 20640;
+ GeoZone GeoZone34 = 20660;
+ GeoZone GeoZone35 = 20680;
+ GeoZone GeoZone36 = 20700;
+ GeoZone GeoZone37 = 20720;
+ GeoZone GeoZone38 = 20740;
+ GeoZone GeoZone39 = 20760;
+ GeoZone GeoZone40 = 20780;
+ GeoZone GeoZone41 = 20800;
+ GeoZone GeoZone42 = 20820;
+ GeoZone GeoZone43 = 20840;
+ GeoZone GeoZone44 = 20860;
+ GeoZone GeoZone45 = 20880;
+ GeoZone GeoZone46 = 20900;
+ GeoZone GeoZone47 = 20920;
+ GeoZone GeoZone48 = 20940;
+ GeoZone GeoZone49 = 20960;
+ GeoZone GeoZone50 = 20980;
+
+ // Features
+
+ // Trip
+ uint32 Trip_StartSpeed = 28000;
+ bool Trip_UseIgnition = 28001;
+ uint32 Trip_ParkDetectionTimeout = 28002;
+
+ // Overspeeding
+ bool Overspeeding_Enable = 28100;
+ uint32 Overspeeding_Limit = 28101;
+ uint32 Overspeeding_ActivationSpeed = 28102;
+ OverSpeedingDeactivationMode Overspeeding_DeactivationMode = 28103;
+ uint32 Overspeeding_DeactivationValue = 28104;
+
+ // USSD
+ bool USSD_Enabled = 28140;
+ uint32 USSD_ID = 28141;
+ uint32 USSD_Interval = 28142;
+ string USSD_Code = 28143;
+
+ // Vehicle Speed Sensor
+ uint32 SpeedSensor_KmPulseCount = 28150;
+
+ // Accelerometer Features
+ // Crash detection
+ bool CrashDetection_Enabled = 28200;
+ uint32 CrashDetection_Level1Threshold = 28201;
+ uint32 CrashDetection_Level2Threshold = 28202;
+ uint32 CrashDetection_Level3Threshold = 28203;
+
+ CrashTraceType CrashDetection_Trace = 28205;
+
+ uint32 CrashDetection_Duration = 28210;
+ uint32 CrashDetection_SendSMSTo = 28220;
+ string CrashDetection_SMSText = 28221;
+
+ uint32 CrashDetection_CallTo = 28225;
+
+ // Rollover detection
+ bool RolloverDetection_Enabled = 28230;
+
+ // Driver Registration
+ DriverRegistration_Mode DriverRegistration_Mode = 29000;
+ DriverRegistration_Authentication DriverRegistration_Authentication = 29001;
+ uint32 DriverRegistration_DeregistrationTimeout = 29002;
+ DigitalOutputName DriverRegistration_BuzzerDigitalOutput = 29010;
+ DigitalOutputName DriverRegistration_ImmobilizerDigitalOutput = 29011;
+ bool DriverRegistration_ImmobilizerActiveLow = 29012;
+
+ uint64 DriverRegistration_AuthorizedID1 = 29100;
+ uint64 DriverRegistration_AuthorizedID2 = 29101;
+ uint64 DriverRegistration_AuthorizedID3 = 29102;
+ uint64 DriverRegistration_AuthorizedID4 = 29103;
+ uint64 DriverRegistration_AuthorizedID5 = 29104;
+ uint64 DriverRegistration_AuthorizedID6 = 29105;
+ uint64 DriverRegistration_AuthorizedID7 = 29106;
+ uint64 DriverRegistration_AuthorizedID8 = 29107;
+ uint64 DriverRegistration_AuthorizedID9 = 29108;
+ uint64 DriverRegistration_AuthorizedID10 = 29109;
+
+ // ECO drive config
+ bool ECODriveActive = 30000;
+ uint32 ECO_OverSpeedingLimit = 30001;
+ uint32 ECO_RPM_GreenBandLowLimit = 30002;
+ uint32 ECO_RPM_GreenBandHighLimit = 30003;
+ uint32 ECO_HarshBreakingLimit = 30004;
+ uint32 ECO_ExtremeBreakingLimit = 30005;
+ uint32 ECO_HarshAccelerationLimit = 30006;
+ uint32 ECO_CorneringLimit = 30007;
+ uint32 ECO_IdlingDelay = 30008;
+ uint32 ECO_IdlingSpeed = 30009;
+ uint32 ECO_CruiseControlSpeed = 30010;
+
+ bool ECO_CalculateOnlyWhenEngineOn = 30020;
+ bool ECO_CustomEngineSource = 30021;
+ bool ECO_EngineOn_DIN1 = 30022;
+ bool ECO_EngineOn_DIN2 = 30023;
+ bool ECO_EngineOn_MovementSensor = 30024;
+ bool ECO_EngineOn_PowerSupplyAvailable = 30025;
+ uint32 ECO_EngineOn_CanRPM_Low = 30026;
+ uint32 ECO_EngineOn_CanRPM_High = 30027;
+ ConditionOperator ECO_EngineOn_Operator = 30028;
+ uint32 ECO_EngineOn_ExternalVoltage = 30029;
+
+ // ECU
+ ECUInterface ECU_Interface = 30100;
+
+ // Fuel consumption
+ FuelConsumption FuelConsumption_Enabled = 30150;
+ uint32 FuelConsumption_EngineDisplacement = 30151;
+ uint32 FuelConsumption_Cylinders = 30152;
+ uint32 FuelConsumption_InjectorPerformance = 30153;
+ uint32 FuelConsumption_VolumetricEfficiently = 30154;
+
+ uint32 FaultCodesReadTime = 30200;
+
+ // SIPAAD
+ uint32 SIPAAD_LinkTimeout = 30500;
+ uint32 SIPAAD_ResponseTimeout = 30501;
+
+ // SIPAAD server configurations
+ string SIPAAD_ServerAddress = 30502;
+ uint32 SIPAAD_ServerPort = 30503;
+ ServerProtocol SIPAAD_ServerProtocol = 30504;
+ bool SIPAAD_SSL_ClientAuthentication = 30505;
+
+ // IO
+ IO IO_Time = 50003;
+ IO IO_Angle = 50004;
+ IO IO_Speed = 50005;
+
+ IO IO_SleepMode = 50008;
+
+ IO IO_Ignition = 50010;
+ IO IO_Movement = 50011;
+ IO IO_DataMode = 50012;
+
+ IO IO_GnssStatus = 50020;
+ IO IO_GnssHDOP = 50021;
+ IO IO_GnssPDOP = 50022;
+ IO IO_GnssJammingStatus = 50023;
+ reserved 50024; // Alarm_GnssDataJumping
+
+ IO IO_GsmSignal = 50030;
+ IO IO_GsmCellId = 50031;
+ IO IO_GsmAreaCode = 50032;
+ IO IO_GsmOperator = 50033;
+ IO IO_GsmTemperature = 50034;
+ IO IO_GsmJammingStatus = 50035;
+
+ IO IO_ExternalVoltage = 50040;
+ IO IO_BatteryVoltage = 50041;
+ IO IO_BatteryCurrent = 50042;
+
+ IO IO_TotalOdometer = 50050;
+ IO IO_Odometer = 50051;
+ IO IO_EngineOnTime = 50052;
+ IO IO_EngineOnTimeDelta = 50053;
+ IO IO_IdlingTime = 50054;
+ IO IO_IdlingTimeDelta = 50055;
+
+ IO IO_SpeedSensor_Speed = 50060;
+ IO IO_SpeedSensor_Distance = 50061;
+ IO IO_SpeedSensor_TotalDistance = 50062;
+ IO IO_SpeedSensor_MaxSpeed = 50063;
+ IO IO_SpeedSensor_GPSSpeedDiff = 50064;
+
+ IO IO_DigitalInput1 = 50070;
+ IO IO_DigitalInput2 = 50071;
+ IO IO_PowerSupply = 50072;
+ IO IO_DigitalInput3 = 50073;
+
+ IO IO_VehicleConnection = 50079;
+
+ IO IO_DigitalInput1Time = 50080;
+ IO IO_DigitalInput1TimeDelta = 50081;
+ IO IO_DigitalInput2Time = 50082;
+ IO IO_DigitalInput2TimeDelta = 50083;
+ IO IO_PowerSupplyTime = 50084;
+ IO IO_PowerSupplyTimeDelta = 50085;
+ IO IO_DigitalInput3Time = 50086;
+ IO IO_DigitalInput3TimeDelta = 50087;
+
+ IO IO_DigitalOutput1 = 50090;
+ IO IO_DigitalOutput2 = 50091;
+
+ IO IO_AnalogInput1 = 50100;
+ IO IO_AnalogInput2 = 50101;
+ IO IO_AnalogInput3 = 50102;
+
+ IO IO_AxisX = 50110;
+ IO IO_AxisY = 50111;
+ IO IO_AxisZ = 50112;
+
+ // ECO drive
+ IO IO_ECO_MaxSpeed = 50150;
+ IO IO_ECO_NormalSpeedDistance = 50151;
+ IO IO_ECO_NormalSpeedTotalDistance = 50152;
+ IO IO_ECO_NormalSpeedTimer = 50153;
+ IO IO_ECO_NormalSpeedTotalTimer = 50154;
+ IO IO_ECO_OverSpeedingDistance = 50155;
+ IO IO_ECO_OverSpeedingTotalDistance = 50156;
+ IO IO_ECO_OverSpeedingTimer = 50157;
+ IO IO_ECO_OverSpeedingTotalTimer = 50158;
+
+ IO IO_ECO_MaxRPM = 50159;
+ IO IO_ECO_RPMGreenBandDistance = 50160;
+ IO IO_ECO_RPMGreenBandTotalDistance = 50161;
+ IO IO_ECO_RPMGreenBandTimer = 50162;
+ IO IO_ECO_RPMGreenBandTotalTimer = 50163;
+
+ IO IO_ECO_OverRPMDistance = 50164;
+ IO IO_ECO_OverRPMTotalDistance = 50165;
+ IO IO_ECO_OverRPMTimer = 50166;
+ IO IO_ECO_OverRPMTotalTimer = 50167;
+
+ IO IO_ECO_IdlingEvent = 50170;
+ IO IO_ECO_CruiseControlTimer = 50171;
+ IO IO_ECO_CruiseControlTotalTimer = 50172;
+ IO IO_ECO_CruiseControlDistance = 50173;
+ IO IO_ECO_CruiseControlTotalDistance = 50174;
+
+ IO IO_ECO_UnderRPMDistance = 50175;
+ IO IO_ECO_UnderRPMTotalDistance = 50176;
+ IO IO_ECO_UnderRPMTimer = 50177;
+ IO IO_ECO_UnderRPMTotalTimer = 50178;
+
+ // ECO Green driving
+ IO IO_ECO_BreakCounter = 50180;
+ IO IO_ECO_HarshBreakCounter = 50181;
+ IO IO_ECO_ExtremeBreakCounter = 50182;
+ IO IO_ECO_HarshAccelerationCounter = 50183;
+ IO IO_ECO_CorneringCounter = 50184;
+
+ IO IO_ECO_TotalBreak = 50185;
+ IO IO_ECO_TotalHarshBreak = 50186;
+ IO IO_ECO_TotalExtremeBreak = 50187;
+ IO IO_ECO_TotalHarshAcceleration = 50188;
+ IO IO_ECO_TotalCornering = 50189;
+
+ // Geozones
+ reserved 50200 to 50249;
+
+ // Trip
+ IO IO_Trip = 50300;
+ IO IO_Trip_Time = 50301;
+ IO IO_Trip_Distance = 50302;
+
+ // Service
+ reserved 50330; // Service
+
+ // IO IO_CrashDetection = 50340;
+ reserved 50340;
+
+ // Driver Registration
+ IO IO_DriverID = 50350;
+
+ // Sensors
+ IO IO_TemperatureSensor1 = 50400;
+ IO IO_TemperatureSensor1_ID = 50401;
+
+ IO IO_TemperatureSensor2 = 50402;
+ IO IO_TemperatureSensor2_ID = 50403;
+
+ IO IO_TemperatureSensor3 = 50404;
+ IO IO_TemperatureSensor3_ID = 50405;
+
+ IO IO_HumiditySensor1 = 50410;
+
+ IO IO_TiltStatus = 50490;
+
+ // OBD
+ IO IO_OBD_EngineRPM = 50500;
+ IO IO_OBD_BatteryVoltage = 50501;
+ IO IO_OBD_EngineCoolantTemperature = 50502;
+ IO IO_OBD_VehicleSpeed = 50503;
+ IO IO_OBD_TotalDistance = 50504;
+ IO IO_OBD_FuelRate = 50505;
+ IO IO_OBD_TotalFuelUsed = 50506;
+ IO IO_OBD_IntakeAirTemperature = 50507;
+ IO IO_OBD_IntakeManifoldAbsolutePressure = 50508;
+
+ /* OBD II Standard */
+ IO IO_OBD_MalfunctionIndicatorLamp = 50550;
+ IO IO_DiagnosticTroubleCodesCount = 50551;
+ IO IO_OBD_CalculatedEngineLoad = 50552;
+ IO IO_OBD_MassAirFlowRate = 50553;
+ IO IO_OBD_ThrottlePosition = 50554;
+ IO IO_OBD_RunTimeSinceEngineStart = 50555;
+ IO IO_OBD_FuelTankLevelInput = 50556;
+ IO IO_OBD_DistanceTraveledSinceCodesCleared = 50557;
+ IO IO_OBD_AbsoluteThrottlePositionD = 50558;
+ IO IO_OBD_TimeRunWithMILOn = 50559;
+ IO IO_OBD_EngineOilTemperature = 50560;
+ IO IO_OBD_FuelSystem1Status = 50561;
+ IO IO_OBD_FuelSystem2Status = 50562;
+ IO IO_OBD_OxygenSensor1Voltage = 50563;
+ IO IO_OBD_OxygenSensor1ShortTermFuelTrim = 50564;
+ IO IO_OBD_OxygenSensor2Voltage = 50565;
+ IO IO_OBD_OxygenSensor2ShortTermFuelTrim = 50566;
+ IO IO_OBD_OxygenSensor3Voltage = 50567;
+ IO IO_OBD_OxygenSensor3ShortTermFuelTrim = 50568;
+ IO IO_OBD_OxygenSensor4Voltage = 50569;
+ IO IO_OBD_OxygenSensor4ShortTermFuelTrim = 50570;
+
+ /* CAN Bus */
+ IO IO_CANBus_Tachograph1_WorkingState1 = 50700;
+ IO IO_CANBus_Tachograph1_WorkingState2 = 50701;
+ IO IO_CANBus_Tachograph1_VehicleMotion = 50702;
+ IO IO_CANBus_Tachograph1_Driv_1_Time_Rel_States = 50703;
+ IO IO_CANBus_Tachograph1_Driver1_Card = 50704;
+ IO IO_CANBus_Tachograph1_VehicleOverspeed = 50705;
+ IO IO_CANBus_Tachograph1_Driv_2_Time_Rel_States = 50706;
+ IO IO_CANBus_Tachograph1_Driver2_Card = 50707;
+ IO IO_CANBus_Tachograph1_SystemEvent = 50708;
+ IO IO_CANBus_Tachograph1_HandlingInformation = 50709;
+ IO IO_CANBus_Tachograph1_TachographPerformance = 50710;
+ IO IO_CANBus_Tachograph1_DirectionIndicator = 50711;
+ IO IO_CANBus_Tachograph1_VehicleSpeed = 50712;
+ IO IO_CANBus_EngineTemperature1_EngineCoolantTemperature = 50713;
+ IO IO_CANBus_ElectronicEngineController1_ActualEnginePercent = 50714;
+ IO IO_CANBus_ElectronicEngineController1_EngineSpeed = 50715;
+ IO IO_CANBus_EngineHours_EngineTotalHours = 50716;
+ IO IO_CANBus_VehicleDistance_TotalVehicleDistance = 50717;
+ IO IO_CANBus_HighResolutionFuelConsumption_TotalFuelUsed = 50718;
+ IO IO_CANBus_DashDisplay_FuelLevel1 = 50719;
+ IO IO_CANBus_AmbientConditions_AmbientAirTemperature = 50720;
+ IO IO_CANBus_FuelEconomy_FuelRate = 50721;
+ IO IO_CANBus_FuelEconomy_InstantaneousFuelEconomy = 50722;
+ IO IO_CANBus_AirSupplyPressure_ServiceBrakeAirPressureCircuit_1 = 50723;
+ IO IO_CANBus_AirSupplyPressure_ServiceBrakeAirPressureCircuit_2 = 50724;
+ IO IO_CANBus_AftertreatmentDieselExhaustFluidTankInformation_Tank1_Level = 50725;
+ // 50726;
+ // 50727;
+ // 50728;
+ // 50729;
+ // 50730;
+ // 50731;
+ // 50732;
+ // 50733;
+ // 50734;
+ // 50735;
+ // 50736;
+ // 50737;
+ // 50738;
+ // 50739;
+ // 50740;
+ // 50741;
+ IO IO_CANBus_TruckBus_ElectronicEngineController2_AcceleratorPedalPosition_1 = 50742;
+ IO IO_CANBus_TruckBus_ElectronicEngineController2_EnginePercentLoad = 50743;
+ IO IO_CANBus_Truck_VehicleWeight_AxleWeight1 = 50744;
+ IO IO_CANBus_Truck_VehicleWeight_AxleWeight2 = 50745;
+ IO IO_CANBus_Truck_VehicleWeight_AxleWeight3 = 50746;
+ IO IO_CANBus_Truck_ServiceInformation_ServiceDistance = 50747;
+ IO IO_CANBus_Truck_PTODriveEngagement_PTOEngageStat = 50748;
+ IO IO_CANBus_Truck_CombinationVehicleWeight_GrossCombinationVehicleWeight = 50749;
+ IO IO_CANBus_TruckBus_Electronic_Retarder_Controller_1_RetarderTorqueMode = 50750;
+ IO IO_CANBus_TruckBus_Electronic_Retarder_Controller_1_RetarderSelection = 50751;
+ IO IO_CANBus_Bus_DoorControl1_DoorPosition = 50752;
+ IO IO_CANBus_Bus_DoorControl1_RampWheelChairlift = 50753;
+ IO IO_CANBus_Bus_DoorControl1_DoorsStatus2 = 50754;
+ IO IO_CANBus_Bus_DoorControl2 = 50755;
+ IO IO_CANBus_BrakeLiningRemaining_AxleFrontLeftWheel = 50756;
+ IO IO_CANBus_BrakeLiningRemaining_AxleFrontRightWheel = 50757;
+ IO IO_CANBus_BrakeLiningRemaining_AxleRear1LeftWheel = 50758;
+ IO IO_CANBus_BrakeLiningRemaining_AxleRear1RightWheel = 50759;
+ IO IO_CANBus_BrakeLiningRemaining_AxleRear2LeftWheel = 50760;
+ IO IO_CANBus_BrakeLiningRemaining_AxleRear2RightWheel = 50761;
+ IO IO_CANBus_BrakeLiningRemaining_AxleRear3LeftWheel = 50762;
+ IO IO_CANBus_BrakeLiningRemaining_AxleRear3RightWheel = 50763;
+ // 50764;
+ // 50765;
+ // 50766;
+ // 50767;
+ // 50768;
+ // 50769;
+ // 50770;
+ // 50771;
+ // 50772;
+ // 50773;
+ // 50774;
+ // 50775;
+ // 50776;
+ // 50777;
+ // 50778;
+ // 50779;
+ // 50780;
+ // 50781;
+ // 50782;
+ // 50783;
+ IO IO_CANBus_TruckBus_CruiseControl = 50784;
+ IO IO_CANBus_Bus_AlternatorSpeed_AlternatorStatus1 = 50785;
+ IO IO_CANBus_Bus_AlternatorSpeed_AlternatorStatus2 = 50786;
+ IO IO_CANBus_Bus_AlternatorSpeed_AlternatorStatus3 = 50787;
+ IO IO_CANBus_Bus_AlternatorSpeed_AlternatorStatus4 = 50788;
+ IO IO_CANBus_Bus_ElectronicTransmissionController2_SelectedGear = 50789;
+ IO IO_CANBus_Bus_ElectronicTransmissionController2_CurrentGear = 50790;
+ IO IO_CANBus_Bus_AirSuspensionControl4_FrontAxleLeft = 50791;
+ IO IO_CANBus_Bus_AirSuspensionControl4_FrontAxleRight = 50792;
+ IO IO_CANBus_Bus_AirSuspensionControl4_RearAxleLeft = 50793;
+ IO IO_CANBus_Bus_AirSuspensionControl4_RearAxleright = 50794;
+ IO IO_CANBus_DashDisplay_FuelLevel2 = 50795;
+ IO IO_CANBus_ElectronicBrakeController_BrakePedalPosition = 50796;
+ IO IO_CANBus_FuelConsumptionGaseous_TotalFuelUsed = 50797;
+ IO IO_CANBus_TruckBus_CruiseControlVehicleSpeed_ParkingBrakeSwitch = 50798;
+ IO IO_CANBus_TruckBus_CruiseControlVehicleSpeed_WheelBasedSpeed = 50799;
+ IO IO_CANBus_TruckBus_CruiseControlVehicleSpeed_CruiseControlActive = 50800;
+ IO IO_CANBus_TruckBus_CruiseControlVehicleSpeed_BrakeSwitch = 50801;
+ IO IO_CANBus_TruckBus_CruiseControlVehicleSpeed_ClutchSwitch = 50802;
+ IO IO_CANBus_TruckBus_CruiseControlVehicleSpeed_PtoState = 50803;
+ IO IO_CANBus_TruckBus_CruiseControlVehicleSpeed_CruiseControlStates = 50804;
+ IO IO_CANBus_Bus_VehicleElectricalPower_HybridBatteryPackRemainingCharge = 50805;
+ IO IO_CANBus_Bus_VehicleDynamicStabilityControl2_SteeringWheelAngle = 50806;
+ IO IO_CANBus_ElectronicEngineController14_FuelType = 50807;
+ IO IO_CANBus_EngineFluidLevelPressure_EngineOilLevel = 50808;
+ IO IO_CANBus_EngineFluidLevelPressure_EngineOilPressure = 50809;
+ IO IO_CANBus_EngineFluidLevelPressure_CoolantLevel = 50810;
+ IO IO_CANBus_TellTaleStatus = 50811;
+ IO IO_CANBus_FuelConsumption_EngineTotalFuelUsed = 50812;
+ IO IO_CANBus_Truck_VehicleWeight_AxleWeight4 = 50813;
+}
+
+message ConfigDiff {
+ repeated Uint32DiffItem Uint32DiffItems = 1;
+ repeated Int32DiffItem Int32DiffItems = 2;
+ repeated Uint64DiffItem Uint64DiffItems = 3;
+ repeated Int64DiffItem Int64DiffItems = 4;
+ repeated StringDiffItem StringDiffItems = 5;
+ repeated BoolDiffItem BoolDiffItems = 6;
+}
+
+message Uint32DiffItem {
+ uint32 Tag = 1;
+ uint32 Value = 2;
+}
+
+message Int32DiffItem {
+ uint32 Tag = 1;
+ int32 Value = 2;
+}
+
+message Uint64DiffItem {
+ uint32 Tag = 1;
+ uint64 Value = 2;
+}
+
+message Int64DiffItem {
+ uint32 Tag = 1;
+ int64 Value = 2;
+}
+
+message BoolDiffItem {
+ uint32 Tag = 1;
+ bool Value = 2;
+}
+
+message StringDiffItem {
+ uint32 Tag = 1;
+ string Value = 2;
+}
+
+// end: config
+
+// begin: General ---------------------------------------------
+enum MovementSource {
+ MS_Ignition = 0;
+ MS_Movement = 1;
+ MS_GPS = 2;
+ MS_CANSpeed = 3;
+}
+
+enum StaticNavigationSource {
+ SN_Movement = 0;
+ SN_Ignition = 1;
+ SN_GPS = 2;
+ SN_Custom = 3;
+}
+
+enum GNSSMode {
+ All = 0;
+ GLONASS = 1;
+ GPS = 2;
+}
+
+enum TimeSynchronization {
+ TS_None = 0;
+ TS_NTP = 1;
+ TS_NITZ = 2;
+ TS_NTP_NITZ = 3;
+}
+
+enum CallAction {
+ Nothing = 0;
+ HangUp = 1;
+ ReportPosition = 2;
+ AutoAnswer = 3;
+}
+
+/* GeoFencing ----------------- */
+message GeoZone {
+ Priority Priority = 1;
+ EventType Event = 2;
+ bool EventOnly = 3;
+ GeoZoneType Type = 4;
+ uint32 Radius = 5;
+ uint32 Border = 6;
+ bool OverSpeeding = 7;
+ uint32 MaxSpeed = 8;
+ uint32 SendSmsTo = 9;
+ string SmsText = 10;
+ repeated float Points = 11;
+}
+
+enum GeoZoneType {
+ Circular = 0;
+ Polygon = 1;
+ Line = 2;
+}
+
+enum GeozoneState {
+ GEO_OutOfZone = 0;
+ GEO_InZone = 0x01;
+ GEO_EnteringZone = 0x02;
+ GEO_LeavingZone = 0x04;
+ GEO_OverSpeeding = 0x08;
+}
+
+// System --------------------------------
+enum SleepMode {
+ SleepDisabled = 0;
+ GpsSleep = 1;
+ DeepSleep = 2;
+ OnlineDeepSleep = 3;
+ UltraSleep = 4;
+}
+
+enum EngineMode {
+ EM_AlwaysOn = 0;
+ EM_Ignition = 1;
+ EM_MoveSensor = 2;
+ EM_Custom = 3;
+}
+
+enum RecordsMode {
+ PositionFix = 0;
+ TimeSync = 1;
+ Allways = 2;
+}
+
+// begin: IO configs ----------------------------------------
+enum AlarmType {
+ Alarm_None = 0;
+
+ Alarm_Normal = 1;
+
+ Alarm_Time = 3;
+ Alarm_Angle = 4;
+ Alarm_Speed = 5;
+
+ Alarm_SleepMode = 8;
+ Alarm_SystemReset = 9;
+
+ Alarm_Ignition = 10;
+ Alarm_Movement = 11;
+ Alarm_DataMode = 12;
+
+ Alarm_GnssStatus = 20;
+ Alarm_GnssHDOP = 21;
+ Alarm_GnssPDOP = 22;
+ Alarm_GnssJammingStatus = 23;
+ Alarm_GnssDataJumping = 24;
+
+ Alarm_GsmSignal = 30;
+ Alarm_GsmCellId = 31;
+ Alarm_GsmAreaCode = 32;
+ Alarm_GsmOperator = 33;
+ Alarm_GsmTemperature = 34;
+ Alarm_GsmJammingStatus = 35;
+
+ Alarm_ExternalVoltage = 40;
+ Alarm_BatteryVoltage = 41;
+ Alarm_BatteryCurrent = 42;
+
+ Alarm_TotalOdometer = 50;
+ Alarm_Odometer = 51;
+ Alarm_EngineOnTime = 52;
+ Alarm_EngineOnTimeDelta = 53;
+ Alarm_IdlingTime = 54;
+ Alarm_IdlingTimeDelta = 55;
+
+ Alarm_SpeedSensor_Speed = 60;
+ Alarm_SpeedSensor_Distance = 61;
+ Alarm_SpeedSensor_TotalDistance = 62;
+ Alarm_SpeedSensor_MaxSpeed = 63;
+ Alarm_SpeedSensor_GPSSpeedDiff = 64;
+
+ Alarm_DigitalInput1 = 70;
+ Alarm_DigitalInput2 = 71;
+ Alarm_PowerSupply = 72;
+ Alarm_DigitalInput3 = 73;
+
+ Alarm_VehicleConnection = 79;
+
+ Alarm_DigitalInput1Time = 80;
+ Alarm_DigitalInput1TimeDelta = 81;
+ Alarm_DigitalInput2Time = 82;
+ Alarm_DigitalInput2TimeDelta = 83;
+ Alarm_PowerSupplyTime = 84;
+ Alarm_PowerSupplyTimeDelta = 85;
+ Alarm_DigitalInput3Time = 86;
+ Alarm_DigitalInput3TimeDelta = 87;
+
+ Alarm_DigitalOutput1 = 90;
+ Alarm_DigitalOutput2 = 91;
+
+ Alarm_AnalogInput1 = 100;
+ Alarm_AnalogInput2 = 101;
+ Alarm_AnalogInput3 = 102;
+
+ Alarm_AxisX = 110;
+ Alarm_AxisY = 111;
+ Alarm_AxisZ = 112;
+
+ // ECO drive
+ Alarm_ECO_MaxSpeed = 150;
+ Alarm_ECO_NormalSpeedDistance = 151;
+ Alarm_ECO_NormalSpeedTotalDistance = 152;
+ Alarm_ECO_NormalSpeedTimer = 153;
+ Alarm_ECO_NormalSpeedTotalTimer = 154;
+ Alarm_ECO_OverSpeedingDistance = 155;
+ Alarm_ECO_OverSpeedingTotalDistance = 156;
+ Alarm_ECO_OverSpeedingTimer = 157;
+ Alarm_ECO_OverSpeedingTotalTimer = 158;
+
+ Alarm_ECO_MaxRPM = 159;
+ Alarm_ECO_RPMGreenBandDistance = 160;
+ Alarm_ECO_RPMGreenBandTotalDistance = 161;
+ Alarm_ECO_RPMGreenBandTimer = 162;
+ Alarm_ECO_RPMGreenBandTotalTimer = 163;
+
+ Alarm_ECO_OverRPMDistance = 164;
+ Alarm_ECO_OverRPMTotalDistance = 165;
+ Alarm_ECO_OverRPMTimer = 166;
+ Alarm_ECO_OverRPMTotalTimer = 167;
+
+ Alarm_ECO_IdlingEvent = 170;
+ Alarm_ECO_CruiseControlTimer = 171;
+ Alarm_ECO_CruiseControlTotalTimer = 172;
+ Alarm_ECO_CruiseControlDistance = 173;
+ Alarm_ECO_CruiseControlTotalDistance = 174;
+
+ Alarm_ECO_UnderRPMDistance = 175;
+ Alarm_ECO_UnderRPMTotalDistance = 176;
+ Alarm_ECO_UnderRPMTimer = 177;
+ Alarm_ECO_UnderRPMTotalTimer = 178;
+
+ // ECO Green driving
+ Alarm_ECO_BreakCounter = 180;
+ Alarm_ECO_HarshBreakCounter = 181;
+ Alarm_ECO_ExtremeBreakCounter = 182;
+ Alarm_ECO_HarshAccelerationCounter = 183;
+ Alarm_ECO_CorneringCounter = 184;
+
+ Alarm_ECO_TotalBreak = 185;
+ Alarm_ECO_TotalHarshBreak = 186;
+ Alarm_ECO_TotalExtremeBreak = 187;
+ Alarm_ECO_TotalHarshAcceleration = 188;
+ Alarm_ECO_TotalCornering = 189;
+
+ // Geofencing alarm
+ Alarm_GeoZone1 = 200;
+ Alarm_GeoZone2 = 201;
+ Alarm_GeoZone3 = 202;
+ Alarm_GeoZone4 = 203;
+ Alarm_GeoZone5 = 204;
+ Alarm_GeoZone6 = 205;
+ Alarm_GeoZone7 = 206;
+ Alarm_GeoZone8 = 207;
+ Alarm_GeoZone9 = 208;
+ Alarm_GeoZone10 = 209;
+ Alarm_GeoZone11 = 210;
+ Alarm_GeoZone12 = 211;
+ Alarm_GeoZone13 = 212;
+ Alarm_GeoZone14 = 213;
+ Alarm_GeoZone15 = 214;
+ Alarm_GeoZone16 = 215;
+ Alarm_GeoZone17 = 216;
+ Alarm_GeoZone18 = 217;
+ Alarm_GeoZone19 = 218;
+ Alarm_GeoZone20 = 219;
+ Alarm_GeoZone21 = 220;
+ Alarm_GeoZone22 = 221;
+ Alarm_GeoZone23 = 222;
+ Alarm_GeoZone24 = 223;
+ Alarm_GeoZone25 = 224;
+ Alarm_GeoZone26 = 225;
+ Alarm_GeoZone27 = 226;
+ Alarm_GeoZone28 = 227;
+ Alarm_GeoZone29 = 228;
+ Alarm_GeoZone30 = 229;
+ Alarm_GeoZone31 = 230;
+ Alarm_GeoZone32 = 231;
+ Alarm_GeoZone33 = 232;
+ Alarm_GeoZone34 = 233;
+ Alarm_GeoZone35 = 234;
+ Alarm_GeoZone36 = 235;
+ Alarm_GeoZone37 = 236;
+ Alarm_GeoZone38 = 237;
+ Alarm_GeoZone39 = 238;
+ Alarm_GeoZone40 = 239;
+ Alarm_GeoZone41 = 240;
+ Alarm_GeoZone42 = 241;
+ Alarm_GeoZone43 = 242;
+ Alarm_GeoZone44 = 243;
+ Alarm_GeoZone45 = 244;
+ Alarm_GeoZone46 = 245;
+ Alarm_GeoZone47 = 246;
+ Alarm_GeoZone48 = 247;
+ Alarm_GeoZone49 = 248;
+ Alarm_GeoZone50 = 249;
+
+ Alarm_Trip = 300;
+ Alarm_Trip_Time = 301;
+ Alarm_Trip_Distance = 302;
+
+ Alarm_Service = 330;
+
+ // Crash detection
+ Alarm_CrashDetection = 340;
+
+ // Driver registration
+ Alarm_DriverID = 350;
+
+ // Sensors
+ Alarm_TemperatureSensor1 = 400;
+ Alarm_TemperatureSensor1_ID = 401;
+
+ Alarm_TemperatureSensor2 = 402;
+ Alarm_TemperatureSensor2_ID = 403;
+
+ Alarm_TemperatureSensor3 = 404;
+ Alarm_TemperatureSensor3_ID = 405;
+
+ Alarm_HumiditySensor1 = 410;
+
+ Alarm_TiltStatus = 490;
+
+ /* OBD */
+ Alarm_OBD_EngineRPM = 500;
+ Alarm_OBD_BatteryVoltage = 501;
+ Alarm_OBD_EngineCoolantTemperature = 502;
+ Alarm_OBD_VehicleSpeed = 503;
+ Alarm_OBD_TotalDistance = 504;
+ Alarm_OBD_FuelRate = 505;
+ Alarm_OBD_TotalFuelUsed = 506;
+ Alarm_OBD_IntakeAirTemperature = 507;
+ Alarm_OBD_IntakeManifoldAbsolutePressure = 508;
+
+ /* OBD II Standard */
+ Alarm_OBD_MalfunctionIndicatorLamp = 550;
+ Alarm_DiagnosticTroubleCodesCount = 551;
+ Alarm_OBD_CalculatedEngineLoad = 552;
+ Alarm_OBD_MassAirFlowRate = 553;
+ Alarm_OBD_ThrottlePosition = 554;
+ Alarm_OBD_RunTimeSinceEngineStart = 555;
+ Alarm_OBD_FuelTankLevelInput = 556;
+ Alarm_OBD_DistanceTraveledSinceCodesCleared = 557;
+ Alarm_OBD_AbsoluteThrottlePositionD = 558;
+ Alarm_OBD_TimeRunWithMILOn = 559;
+ Alarm_OBD_EngineOilTemperature = 560;
+ Alarm_OBD_FuelSystem1Status = 561;
+ Alarm_OBD_FuelSystem2Status = 562;
+ Alarm_OBD_OxygenSensor1Voltage = 563;
+ Alarm_OBD_OxygenSensor1ShortTermFuelTrim = 564;
+ Alarm_OBD_OxygenSensor2Voltage = 565;
+ Alarm_OBD_OxygenSensor2ShortTermFuelTrim = 566;
+ Alarm_OBD_OxygenSensor3Voltage = 567;
+ Alarm_OBD_OxygenSensor3ShortTermFuelTrim = 568;
+ Alarm_OBD_OxygenSensor4Voltage = 569;
+ Alarm_OBD_OxygenSensor4ShortTermFuelTrim = 570;
+
+ /* CAN Bus */
+ Alarm_CANBus_Tachograph1_WorkingState1 = 700;
+ Alarm_CANBus_Tachograph1_WorkingState2 = 701;
+ Alarm_CANBus_Tachograph1_VehicleMotion = 702;
+ Alarm_CANBus_Tachograph1_Driv_1_Time_Rel_States = 703;
+ Alarm_CANBus_Tachograph1_Driver1_Card = 704;
+ Alarm_CANBus_Tachograph1_VehicleOverspeed = 705;
+ Alarm_CANBus_Tachograph1_Driv_2_Time_Rel_States = 706;
+ Alarm_CANBus_Tachograph1_Driver2_Card = 707;
+ Alarm_CANBus_Tachograph1_SystemEvent = 708;
+ Alarm_CANBus_Tachograph1_HandlingInformation = 709;
+ Alarm_CANBus_Tachograph1_TachographPerformance = 710;
+ Alarm_CANBus_Tachograph1_DirectionIndicator = 711;
+ Alarm_CANBus_Tachograph1_VehicleSpeed = 712;
+ Alarm_CANBus_EngineTemperature1_EngineCoolantTemperature = 713;
+ Alarm_CANBus_ElectronicEngineController1_ActualEnginePercent = 714;
+ Alarm_CANBus_ElectronicEngineController1_EngineSpeed = 715;
+ Alarm_CANBus_EngineHours_EngineTotalHours = 716;
+ Alarm_CANBus_VehicleDistance_TotalVehicleDistance = 717;
+ Alarm_CANBus_HighResolutionFuelConsumption_TotalFuelUsed = 718;
+ Alarm_CANBus_DashDisplay_FuelLevel1 = 719;
+ Alarm_CANBus_AmbientConditions_AmbientAirTemperature = 720;
+ Alarm_CANBus_FuelEconomy_FuelRate = 721;
+ Alarm_CANBus_FuelEconomy_InstantaneousFuelEconomy = 722;
+ Alarm_CANBus_AirSupplyPressure_ServiceBrakeAirPressureCircuit_1 = 723;
+ Alarm_CANBus_AirSupplyPressure_ServiceBrakeAirPressureCircuit_2 = 724;
+ Alarm_CANBus_AftertreatmentDieselExhaustFluidTankInformation_Tank1_Level = 725;
+ // 726;
+ // 727;
+ // 728;
+ // 729;
+ // 730;
+ // 731;
+ // 732;
+ // 733;
+ // 734;
+ // 735;
+ // 736;
+ // 737;
+ // 738;
+ // 739;
+ // 740;
+ // 741;
+ Alarm_CANBus_TruckBus_ElectronicEngineController2_AcceleratorPedalPosition_1 = 742;
+ Alarm_CANBus_TruckBus_ElectronicEngineController2_EnginePercentLoad = 743;
+ Alarm_CANBus_Truck_VehicleWeight_AxleWeight1 = 744;
+ Alarm_CANBus_Truck_VehicleWeight_AxleWeight2 = 745;
+ Alarm_CANBus_Truck_VehicleWeight_AxleWeight3 = 746;
+ Alarm_CANBus_Truck_ServiceInformation_ServiceDistance = 747;
+ Alarm_CANBus_Truck_PTODriveEngagement_PTOEngageStat = 748;
+ Alarm_CANBus_Truck_CombinationVehicleWeight_GrossCombinationVehicleWeight = 749;
+ Alarm_CANBus_TruckBus_Electronic_Retarder_Controller_1_RetarderTorqueMode = 750;
+ Alarm_CANBus_TruckBus_Electronic_Retarder_Controller_1_RetarderSelection = 751;
+ Alarm_CANBus_Bus_DoorControl1_DoorPosition = 752;
+ Alarm_CANBus_Bus_DoorControl1_RampWheelChairlift = 753;
+ Alarm_CANBus_Bus_DoorControl1_DoorsStatus2 = 754;
+ Alarm_CANBus_Bus_DoorControl2 = 755;
+ Alarm_CANBus_BrakeLiningRemaining_AxleFrontLeftWheel = 756;
+ Alarm_CANBus_BrakeLiningRemaining_AxleFrontRightWheel = 757;
+ Alarm_CANBus_BrakeLiningRemaining_AxleRear1LeftWheel = 758;
+ Alarm_CANBus_BrakeLiningRemaining_AxleRear1RightWheel = 759;
+ Alarm_CANBus_BrakeLiningRemaining_AxleRear2LeftWheel = 760;
+ Alarm_CANBus_BrakeLiningRemaining_AxleRear2RightWheel = 761;
+ Alarm_CANBus_BrakeLiningRemaining_AxleRear3LeftWheel = 762;
+ Alarm_CANBus_BrakeLiningRemaining_AxleRear3RightWheel = 763;
+ // 764;
+ // 765;
+ // 766;
+ // 767;
+ // 768;
+ // 769;
+ // 770;
+ // 771;
+ // 772;
+ // 773;
+ // 774;
+ // 775;
+ // 776;
+ // 777;
+ // 778;
+ // 779;
+ // 780;
+ // 781;
+ // 782;
+ // 783;
+ Alarm_CANBus_TruckBus_CruiseControl = 784;
+ Alarm_CANBus_Bus_AlternatorSpeed_AlternatorStatus1 = 785;
+ Alarm_CANBus_Bus_AlternatorSpeed_AlternatorStatus2 = 786;
+ Alarm_CANBus_Bus_AlternatorSpeed_AlternatorStatus3 = 787;
+ Alarm_CANBus_Bus_AlternatorSpeed_AlternatorStatus4 = 788;
+ Alarm_CANBus_Bus_ElectronicTransmissionController2_SelectedGear = 789;
+ Alarm_CANBus_Bus_ElectronicTransmissionController2_CurrentGear = 790;
+ Alarm_CANBus_Bus_AirSuspensionControl4_FrontAxleLeft = 791;
+ Alarm_CANBus_Bus_AirSuspensionControl4_FrontAxleRight = 792;
+ Alarm_CANBus_Bus_AirSuspensionControl4_RearAxleLeft = 793;
+ Alarm_CANBus_Bus_AirSuspensionControl4_RearAxleright = 794;
+ Alarm_CANBus_DashDisplay_FuelLevel2 = 795;
+ Alarm_CANBus_ElectronicBrakeController_BrakePedalPosition = 796;
+ Alarm_CANBus_FuelConsumptionGaseous_TotalFuelUsed = 797;
+ Alarm_CANBus_TruckBus_CruiseControlVehicleSpeed_ParkingBrakeSwitch = 798;
+ Alarm_CANBus_TruckBus_CruiseControlVehicleSpeed_WheelBasedSpeed = 799;
+ Alarm_CANBus_TruckBus_CruiseControlVehicleSpeed_CruiseControlActive = 800;
+ Alarm_CANBus_TruckBus_CruiseControlVehicleSpeed_BrakeSwitch = 801;
+ Alarm_CANBus_TruckBus_CruiseControlVehicleSpeed_ClutchSwitch = 802;
+ Alarm_CANBus_TruckBus_CruiseControlVehicleSpeed_PtoState = 803;
+ Alarm_CANBus_TruckBus_CruiseControlVehicleSpeed_CruiseControlStates = 804;
+ Alarm_CANBus_Bus_VehicleElectricalPower_HybridBatteryPackRemainingCharge = 805;
+ Alarm_CANBus_Bus_VehicleDynamicStabilityControl2_SteeringWheelAngle = 806;
+ Alarm_CANBus_ElectronicEngineController14_FuelType = 807;
+ Alarm_CANBus_EngineFluidLevelPressure_EngineOilLevel = 808;
+ Alarm_CANBus_EngineFluidLevelPressure_EngineOilPressure = 809;
+ Alarm_CANBus_EngineFluidLevelPressure_CoolantLevel = 810;
+ Alarm_CANBus_TellTaleStatus = 811;
+ Alarm_CANBus_FuelConsumption_EngineTotalFuelUsed = 812;
+ Alarm_CANBus_Truck_VehicleWeight_AxleWeight4 = 813;
+}
+
+message IO {
+ Priority Priority = 1;
+ EventType Event = 2;
+ int32 LowLevel = 3;
+ int32 HighLevel = 4;
+ // int32 Average = 5;
+ reserved 5;
+ bool EventOnly = 6;
+ uint32 SendSmsTo = 7;
+ string SmsText = 8;
+}
+
+enum EventType {
+ Monitoring = 0;
+ OnExit = 1;
+ OnEntrance = 2;
+ OnBoth = 3;
+ OnHystersis = 4;
+ OnChange = 5;
+ OnDeltaChange = 6;
+}
+
+enum Priority {
+ PR_None = 0;
+ PR_Low = 1;
+ PR_High = 2;
+ PR_SendData = 3;
+}
+
+// end: IO configs ------------------------------------------
+
+// begin: Digital output -----------------------------------
+enum DigitalOutputName {
+ DigitalOutput_None = 0;
+ DigitalOutput_1 = 1;
+ DigitalOutput_2 = 2;
+}
+// end: Digital output -------------------------------------
+
+// begin: OverSpeeding -------------------------------------
+enum OverSpeedingDeactivationMode {
+ OverSpeedingDeactivationMode_Timeout = 0;
+ OverSpeedingDeactivationMode_Speed = 1;
+}
+// end: Digital OverSpeeding --------------------------------
+
+// end: general ---------------------------------------------
+
+// begin: Driver registration -------------------------------
+enum DriverRegistration_Mode {
+ DRMode_Disabled = 0;
+ DRMode_Registration = 1;
+}
+
+enum DriverRegistration_Authentication {
+ DRAuth_UnAuthorized = 0;
+ DRAuth_Authorized = 1;
+}
+// end: Driver registration ---------------------------------
+
+// begin: Bluetooth -----------------------------------------
+enum BluetoothMode {
+ BM_Disabled = 0;
+ BM_EnableHidden = 1;
+ BM_EnableVisible = 2;
+}
+
+enum BluetoothSecurityMode {
+ BSMode_PINOnly = 0;
+ BSMode_PIN_MACList = 1;
+ BSMode_MACList = 2;
+ BSMode_None = 3;
+}
+
+enum BluetoothExternalConnectionMode {
+ BECMode_None = 0;
+ BECMode_HandsFree = 1;
+ BECMode_OBDII = 2;
+ BECMode_DataLink = 3;
+}
+
+// end: Bluetooth -------------------------------------------
+
+// begin: Connection ----------------------------------------
+enum ServerProtocol {
+ TCP = 0;
+ UDP = 1;
+ SSL = 2;
+}
+
+enum AuthenticationMode {
+ Authentication_IMEI = 0;
+ Authentication_AuthenticationCodeAndIMEI = 1;
+}
+// end: Connection --------------------------------------------
+
+// Tilt status
+enum TiltStatus {
+ TS_Unknown = 0;
+
+ // For MCU
+ TS_BoardReset = 90;
+ TS_OffsetReset = 91;
+
+ // For server
+ TS_NormalTilt = 100;
+ TS_AuthorizedTiltUnloading = 101;
+ TS_PTOActive = 102;
+ TS_InvalidTilt = 103;
+ TS_UnauthorizedTiltUnloading = 104;
+}
+
+// begin: ECU Interface configs -----------------------------------------
+enum ECUInterface {
+ ECU_Disabled = 0;
+
+ OBD_Auto = 1;
+ OBD_KLine_ISO14230_KWP_Fast = 2;
+ OBD_KLine_ISO14230_KWP_5Baud = 3;
+ OBD_KLine_ISO9141 = 4;
+ OBD_CAN_ISO15765_11bit_500 = 5;
+ OBD_CAN_ISO15765_11bit_250 = 6;
+ OBD_CAN_ISO15765_29bit_500 = 7;
+ OBD_CAN_ISO15765_29bit_250 = 8;
+ OBD_KLine_Siemense = 9;
+
+ CANBus_FMS = 20;
+ CANBus_BenzAxor = 21;
+ CANBus_Scania = 22;
+}
+// end: ECU Interface configs -------------------------------------
+
+// begin: Fuel consumption ----------------------------------
+enum FuelConsumption {
+ FC_Disabled = 0;
+ FC_Gasoline = 1;
+ FC_Diesel = 2;
+}
+// end: Fuel consumption ------------------------------------
+
+// begin: OverSpeeding -------------------------------------
+enum CrashTraceType {
+ Trace_Disabled = 0;
+ Trace_Point = 1;
+ Trace_IO = 2;
+}
+// end: Digital OverSpeeding --------------------------------
+
+// begin: Service --------------------------------------------
+message Service_IOCondition {
+ uint32 IO_ID = 1;
+ NumberOperator Operator = 2;
+ int64 Value = 3;
+ bool CalcDiff = 4;
+}
+
+message Service_IOConditionGroup {
+ ConditionOperator Operator = 1;
+ repeated Service_IOCondition IO_Conditions = 2;
+}
+
+message Service_StateCondition {
+ ConditionOperator Condition_Operator = 1;
+ repeated Service_IOCondition IO_Conditions = 2;
+ repeated Service_IOConditionGroup IO_ConditionGroups = 3;
+}
+
+message Service_State {
+ uint32 ID = 1;
+ Service_StateCondition PointCondition = 2;
+ Service_StateCondition ChangeCondition = 3;
+}
+
+message Service {
+ uint32 ID = 1;
+ repeated Service_State States = 2;
+}
+// end : Service ---------------------------------------------
+
+// begin: General defs ---------------------------------------
+enum NumberOperator {
+ Equal = 0;
+ Greater = 1;
+ Smaller = 2;
+}
+
+enum ConditionOperator {
+ AND = 0;
+ OR = 1;
+}
+
+enum SerialBaudrate {
+ SBaud_115200 = 0;
+ SBaud_57600 = 1;
+ SBaud_38400 = 2;
+ SBaud_28800 = 3;
+ SBaud_19200 = 4;
+ SBaud_14400 = 5;
+ SBaud_9600 = 6;
+ SBaud_4800 = 7;
+ SBaud_2400 = 8;
+ SBaud_1200 = 9;
+ SBaud_600 = 10;
+}
+// end:: General defs ----------------------------------------
diff --git a/src/main/proto/DolphinMessages.proto b/src/main/proto/DolphinMessages.proto
new file mode 100644
index 000000000..8d648592d
--- /dev/null
+++ b/src/main/proto/DolphinMessages.proto
@@ -0,0 +1,511 @@
+syntax = "proto3";
+
+package org.traccar.protobuf.dolphin.Messages;
+option go_package = "dolphindevice";
+
+import "DolphinConfig.proto";
+
+// begin: Messages - defs ---------------------
+enum MessageType {
+ Timeout = 0; /* Reserved for embedded system */
+
+ DataPack_Request = 1;
+ DataPack_Response = 2;
+
+ Authentication_Request = 7;
+ Authentication_Response = 8;
+
+ OnlinePosition_Request = 9;
+
+ /* Config messages */
+ Config_Set_Request = 10; /* Set configuration - from server */
+ Config_Set_Response = 11; /* Setting configuration ok - from device */
+ Config_Get_Request = 12; /* Get configuration from device - from server */
+ Config_Get_Response = 13; /* Packet has config data - from device */
+ Config_Diff_Request = 14; /* Configuration diff message - from server */
+ Config_Diff_Response = 15; /* Configuration diff response - from device */
+
+ Config_SSLSetCertificate_Request = 16;
+ Config_SSLSetCertificate_Response = 17;
+ Config_SSLGetStatus_Request = 18;
+ Config_SSLGetStatus_Response = 19;
+
+ /* Firmware update */
+ Firmware_Info_Request = 20; /* from device */
+ Firmware_Info_Response = 21; /* from server */
+ Firmware_Update_Start_Request = 22; /* Starting firmware update - from server */
+ Firmware_Update_Start_Response = 23; /* Starting firmware update is ok - from device */
+ Firmware_GetPack_Request = 24; /* Packet get message - from device */
+ Firmware_GetPack_Response = 25; /* Pachet get response - from server */
+ Firmware_Update_State = 26; /* Update state - from device */
+
+ /* Connection messages */
+ Ping = 30;
+ Pong = 31;
+ Log_Start = 32;
+ Log_End = 33;
+ Log_Pack = 34;
+ DeviceInfo_Request = 35;
+ DeviceInfo_Response = 36;
+
+ // Sensors
+ Temperature_Request = 40;
+ Temperature_Response = 41;
+
+ TiltStatus_Request = 42;
+ TiltStatus_Data = 43;
+
+ // Commands
+ Command_Request = 60;
+ Command_Response = 61;
+
+ // USSD Data
+ USSDData_Request = 68;
+
+ // Expansion Board
+ ExpBoard_Data_Request = 70;
+ ExpBoard_Data_Response = 71;
+ ExpBoard_SetDigital_Request = 72;
+ ExpBoard_SetDigital_Response = 73;
+
+ // FMS Data
+ FMS_DataLog_Start = 80;
+ FMS_DataLog_End = 81;
+ FMS_DataLog_Data = 82;
+
+ // Crash Data
+ Crash_Data_Request = 90;
+ Crash_Data_Response = 91;
+
+ // SIPAAD
+ SIPAAD_SSL_GetStatus_Request = 100;
+ SIPAAD_SSL_GetStatus_Response = 101;
+
+ // DiagnosticsTroubleCodes
+ DiagnosticsTroubleCodes_SaveCodes_Request = 110;
+ DiagnosticsTroubleCodes_SaveCodes_Response = 111;
+}
+
+enum MessageFlags {
+ Flag_None = 0;
+ Flag_Compressed = 0x01;
+}
+
+// end: Messages defs -------------------
+
+// begin: Point - Statistics defs ---------------------
+message IOData {
+ Config.AlarmType ID = 1;
+ uint64 Value = 2;
+}
+
+message DataPoint {
+ float Latitude = 1;
+ float Longitude = 2;
+ float Altitude = 3;
+ uint32 Satellites = 4;
+ float Speed = 5;
+ float Bearing = 6;
+ uint32 HDOP = 7;
+ fixed32 Timestamp = 8;
+ Config.AlarmType Alarm = 9;
+
+ // repeated IOData IO = 10 [deprecated = true];
+
+ // Netw protocol IO
+ repeated Config.AlarmType IOList_ID = 11;
+ repeated uint64 IOList_Value = 12;
+}
+
+message DataPackRequest {
+ repeated DataPoint Points = 1;
+}
+
+enum DataPackResponseCode {
+ DataPack_Timeout = 0;
+ DataPack_OK = 1;
+ DataPack_UnknownError = 2;
+ DataPack_Decode_Error = 3;
+}
+
+message DataPackResponse {
+ DataPackResponseCode Response = 1;
+}
+
+// end: Point defs -------------------
+
+// Serial port --------------------
+message DeviceInfo {
+ string Name = 1;
+ fixed64 IMEI = 2;
+ string FirmwareVersion = 3;
+
+ // System info
+ fixed32 RTCTimestamp = 10;
+ fixed32 LastStartTimestamp = 11;
+ uint32 UpTime = 12;
+ uint32 TotalUpTime = 13;
+
+ // GNSS
+ GNSSStatus GNSS_Status = 20;
+ bool GNSS_Fix = 21;
+ uint32 GNSS_TimeToFirstFix = 22;
+ uint32 GNSS_TimeToLastFix = 23;
+ uint32 GNSS_Packets = 25;
+ float GNSS_Latitude = 26;
+ float GNSS_Longitude = 27;
+ uint32 GNSS_Altitude = 28;
+ uint32 GNSS_Speed = 29;
+ uint32 GNSS_Bearing = 30;
+ uint32 GNSS_HDOP = 31;
+ uint32 GNSS_PDOP = 32;
+ uint32 GNSS_SatsInUse = 33;
+ uint32 GNSS_GPSSats = 34;
+ uint32 GNSS_GLONASSSats = 35;
+ uint32 GNSS_GalileoSats = 36;
+ uint32 GNSS_BeidouSats = 37;
+ GNSS_JammingStatus GNSS_JammingStatus = 38;
+
+ // GSM
+ ModemStatus GSM_ModemStatus = 50;
+ SIMStatus GSM_SIMStatus = 52;
+ bool GSM_GPRSStatus = 53;
+ string GSM_OperatorName = 54;
+ uint32 GSM_OperatorCode = 55;
+ uint32 GSM_LocationAreaCode = 56;
+ uint32 GSM_CellID = 57;
+ uint32 GSM_SignalStrength = 58;
+ bool GSM_Jamming = 59;
+
+ uint32 GSM_Records_SentCount = 60;
+ uint32 GSM_Records_LastSentTime = 61;
+ uint32 GSM_Records_LastServerResponseTime = 62;
+ uint32 GSM_Records_Count = 63;
+
+ uint32 GSM_GPRS_SentData = 65;
+ uint32 GSM_GPRS_ReceivedData = 66;
+
+ uint32 GSM_SMS_Sent = 69;
+ uint32 GSM_SMS_Received = 70;
+
+ bool GSM_Socket_State = 75;
+
+ // Bluetooth
+ BluetoothStatus Bluetooth_Status = 80;
+ string Bluetooth_Name = 81;
+ string Bluetooth_MAC = 82;
+ bool Bluetooth_DataLink_ConnectStatus = 83;
+ string Bluetooth_DataLink_Name = 84;
+ string Bluetooth_DataLink_MAC = 85;
+ BluetoothExtDeviceStatus Bluetooth_ExtDevice_Status = 86;
+ string Bluetooth_ExtDevice_Name = 87;
+ string Bluetooth_ExtDevice_MAC = 88;
+
+ // IO
+ repeated Config.AlarmType IOList_ID = 100;
+ repeated uint64 IOList_Value = 101;
+}
+
+enum GNSSStatus {
+ GNSS_Off = 0;
+ GNSS_NotFixed = 1;
+ GNSS_Fixed = 2;
+ GNSS_Sleep = 3;
+}
+
+enum GNSS_JammingStatus {
+ GNSS_UnknownJammingStatus = 0;
+ GNSS_NoJamming = 1;
+ GNSS_JammingWarning = 2;
+ GNSS_JammingCritical = 3;
+}
+
+enum ModemStatus {
+ ModemStatus_Off = 0;
+ ModemStatus_NotRegistered = 1;
+ ModemStatus_Searching = 2;
+ ModemStatus_Registered = 3;
+ ModemStatus_Roaming = 4;
+}
+
+enum SIMStatus {
+ SIM_NotInserted = 0;
+ SIM_Ready = 1;
+ SIM_PIN_REQ = 2;
+ SIM_PUK_REQ = 3;
+ SIM_PH_PIN_REQ = 4;
+ SIM_PH_PUK_REQ = 5;
+ SIM_PIN2_REQ = 6;
+ SIM_PUK2_REQ = 7;
+ SIM_Busy = 8;
+ SIM_NotReady = 9;
+ SIM_Unspecified = 10;
+}
+
+enum BluetoothStatus {
+ BL_Off = 0;
+ BL_OnHidden = 1;
+ BL_OnVisible = 2;
+}
+
+enum BluetoothExtDeviceStatus {
+ BLExt_None = 0;
+ BLExt_Scanning = 1;
+ BLExt_Pairing = 2;
+ BLExt_WaitForPair = 3;
+ BLExt_Connecting = 4;
+ BLExt_Connected = 5;
+}
+
+// --------------------------------
+
+// Config ------------------------
+enum ConfigResponseCode {
+ OK = 0;
+ Unknown_Error = 1; /* Config error - from device */
+ Protocol_Error = 2; /* Config message protocol error - from device */
+ Store_Error = 3; /* Config store error - from device */
+ Wrong_Password = 4; /* Configuration password is wrong */
+}
+
+message ConfigSetRequest {
+ string Password = 1;
+ Config.Config Configuration = 2;
+}
+
+message ConfigSetResponse {
+ ConfigResponseCode Response = 1;
+}
+
+message ConfigGetRequest {
+ string Password = 1;
+}
+
+message ConfigGetResponse {
+ ConfigResponseCode Response = 1;
+ Config.Config Data = 2;
+}
+
+message ConfigDiffRequest {
+ string Password = 1;
+ Config.ConfigDiff ConfigDiff = 2;
+}
+
+// ----------------------------------
+
+// Firmware update ---------------------
+message FirmwareUpdateInfo_Request {
+ string Channel = 1;
+ uint32 HardwareVersion = 2;
+
+ string Device_Version_Name = 10;
+ uint32 Device_Version_Major = 11;
+ uint32 Device_Version_Minor = 12;
+ uint32 Device_Version_Revision = 13;
+}
+
+message FirmwareUpdateInfo_Response {
+ string Version_Name = 1;
+ uint32 Version_Major = 2;
+ uint32 Version_Minor = 3;
+ uint32 Version_Revision = 4;
+ // Firmware ID
+ uint32 FirmwareID = 5;
+ // Firmware file total size in bytes
+ uint32 TotalSize = 6;
+}
+
+enum FURespCode {
+ FU_NONE = 0; // Reserved for embedded system
+
+ FU_UPDATE_START_OK = 1;
+ FU_UPDATE_START_ERROR = 2;
+ FU_UPDATE_START_ERROR_SIZE = 3;
+
+ FU_GETPACK_OK = 4;
+ FU_GETPACK_ERROR = 5;
+
+ FU_UPDATE_STATE_INSTALLING = 6;
+ FU_UPDATE_STATE_FINISHED = 7;
+ FU_UPDATE_STATE_ERROR = 8;
+ FU_UPDATE_STATE_ERROR_INVALID = 9;
+ FU_UPDATE_STATE_ERROR_CRC = 10;
+}
+
+message FirmwareUpdateResp {
+ uint32 FirmwareID = 1;
+ FURespCode Response = 2;
+
+ string Firmware_Version_Name = 3;
+ uint32 Firmware_Version_Major = 4;
+ uint32 Firmware_Version_Minor = 5;
+ uint32 Firmware_Version_Revision = 6;
+}
+
+message FUStartData {
+ // Firmware ID
+ uint32 FirmwareID = 1;
+ // Firmware file total size in bytes
+ uint32 TotalSize = 2;
+}
+
+message FUPackRequest {
+ uint32 FirmwareID = 1;
+ uint32 Start = 2;
+ uint32 End = 3;
+}
+
+message FUPacket {
+ uint32 FirmwareID = 1;
+ FURespCode Response = 2;
+ uint32 Start = 3;
+ uint32 End = 4;
+ bytes Data = 5;
+}
+
+// Log messages -----------------
+enum LogLevel {
+ LOG_LEVEL_NONE = 0;
+ LOG_LEVEL_FATAL = 0x01;
+ LOG_LEVEL_ERROR = 0x02;
+ LOG_LEVEL_WARN = 0x04;
+ LOG_LEVEL_INFO = 0x08;
+ LOG_LEVEL_DEBUG = 0x10;
+}
+
+message LogMessage {
+ fixed32 UnixTimestamp = 1;
+ LogLevel Level = 2;
+ string Message = 3;
+}
+
+message LogPack {
+ repeated LogMessage Messages = 1;
+}
+
+message LogStart {
+ LogLevel Level = 1;
+}
+
+// FMS -------------------------------------
+message FMSData {
+ repeated uint32 PGN_Id_List = 1;
+ repeated uint64 PGN_Value_List = 2;
+}
+
+// System ----------------------------------
+enum SystemResetType {
+ SystemReset_PowerOn = 0;
+ SystemReset_Sleep = 1;
+ SystemReset_HardFault = 2;
+ SystemReset_WatchDog = 3;
+ SystemReset_FirmwareUpdate = 4;
+ SystemReset_User = 5;
+}
+
+
+// Authenticate -----------------------
+message AuthenticateRequest {
+ string Code = 1;
+}
+
+enum AuthenticateResponseCode {
+ Authenticate_Invalid = 0;
+ Authenticate_Valid = 1;
+}
+
+message AuthenticateResponse {
+ AuthenticateResponseCode Code = 1;
+}
+
+// Commands ---------------------------
+message CommandRequest {
+ string Command = 1;
+}
+
+message CommandResponse {
+ string Response = 1;
+}
+
+
+message USSDData{
+ uint32 ID = 1;
+ string USSDCode = 2;
+ string USSDResponse = 3;
+ uint32 Timestamp = 4;
+ bool ResponseStatus = 5;
+}
+
+// Crash
+message CrashAccelData {
+ uint64 Timestamp = 1;
+ sint32 X = 2;
+ sint32 Y = 3;
+ sint32 Z = 4;
+}
+
+message CrashData {
+ uint32 Timestamp = 1;
+ uint32 Level = 2;
+ repeated CrashAccelData AccelData = 3;
+ repeated DataPoint PointData = 4;
+}
+
+message CrashDataResponse {
+ CrashDataResponseCode Code = 1;
+}
+
+enum CrashDataResponseCode {
+ CrashData_Error = 0;
+ CrashData_OK = 1;
+}
+
+// Diagnostics Trouble Codes ----------
+enum DTCResposneCode {
+ DTC_RESPOSNE_NONE = 0;
+ DTC_RESPOSNE_ERROR = 1;
+ DTC_RESPOSNE_OK = 2;
+}
+
+message DTCResposne {
+ DTCResposneCode DTCResposneCode = 1;
+}
+
+message DTCRequest {
+ repeated DTCRecord DTCRecords = 1;
+}
+
+message DTCRecord {
+ repeated DTCCode DTCCodes = 1;
+ uint32 Timestamp = 2;
+
+ // OBD Lamp status
+ bool OBD_MalfunctionIndicatorLamp = 3;
+
+ // FMS Lamp Status
+ uint32 FMS_ProtectLamp = 4;
+ uint32 FMS_AmberWarningLamp = 5;
+ uint32 FMS_RedStopLamp = 6;
+ uint32 FMS_MalfunctionIndicatorLamp = 7;
+
+ uint32 FMS_SAELamp1 = 8;
+ uint32 FMS_SAELamp2 = 9;
+ uint32 FMS_SAELamp3 = 10;
+ uint32 FMS_SAELamp4 = 11;
+}
+
+message DTCCode {
+ DTCType DTCType = 1;
+ uint32 Code = 2;
+ uint32 Reason = 3;
+ uint32 OccurrenceCount = 4;
+ uint32 Source = 5;
+}
+
+enum DTCType {
+ OBD_STORED_DTC = 0;
+ OBD_PENDING_DTC = 1;
+ OBD_PERMANENT_DTC = 2;
+ FMS_DTC = 3;
+ SCANIA_DTC = 4;
+}
diff --git a/src/test/java/org/traccar/protocol/DolphinProtocolDecoderTest.java b/src/test/java/org/traccar/protocol/DolphinProtocolDecoderTest.java
new file mode 100644
index 000000000..ea60b51b1
--- /dev/null
+++ b/src/test/java/org/traccar/protocol/DolphinProtocolDecoderTest.java
@@ -0,0 +1,20 @@
+package org.traccar.protocol;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.traccar.ProtocolTest;
+
+@Ignore
+public class DolphinProtocolDecoderTest extends ProtocolTest {
+
+ @Test
+ public void testDecode() throws Exception {
+
+ DolphinProtocolDecoder decoder = new DolphinProtocolDecoder(null);
+
+ verifyPositions(decoder, binary(
+ "ababe0110000000100000100b3950b86c70e030048040000f524bcc90a9d010d9de6144215b78a46421d6666c6402008359a99cf41380a455d90e15f48015a41050a0b1e29323334353637464850649601a401a601aa01ab01ad01b401b501b601b701b801c905ca05cb05cd05d105d205e605e705ef059c069e06a206a906aa06623900000015e71cc8f5d00b00ee99a20200c2c88901000001ef9aa202000200000000000000000000697d0082b4e106000000000000030000fa010a99010d9de6144215b78a46421d6666c640359a99cf4145d292e15f48015a41050a0b1e29323334353637464850649601a401a601aa01ab01ad01b401b501b601b701b801c905ca05cb05cd05d105d205e605e705ef059c069e06a206a906aa066239000000158d1dc8f5d00b00ee99a20200c2c88901000001ef9aa202000000000000000000000000697d0082b4e106000000000000030000fa010a99010d9de6144215b78a46421d6666c640359a99cf41455696e15f48015a41050a0b1e29323334353637464850649601a401a601aa01ab01ad01b401b501b601b701b801c905ca05cb05cd05d105d205e605e705ef059c069e06a206a906aa06623900000015821dc8f5d00b00ee99a20200c2c88901000001ef9aa202000000000000000000000000697d0082b4e106000000000000030000fa010a99010d9de6144215b78a46421d6666c640359a99cf4145da99e15f48015a41050a0b1e29323334353637464850649601a401a601aa01ab01ad01b401b501b601b701b801c905ca05cb05cd05d105d205e605e705ef059c069e06a206a906aa066239000000148d1dc8f5d00b00ee99a20200c2c88901000001ef9aa202000000000000000000000000697d0082b4e106000000000000030000fa010a99010d9de6144215b78a46421d6666c640359a99cf41455e9de15f48015a41050a0b1e29323334353637464850649601a401a601aa01ab01ad01b401b501b601b701b801c905ca05cb05cd05d105d205e605e705ef059c069e06a206a906aa06623900000014fd1cc8f5d00b00ee99a20200c2c88901000001ef9aa202000000000000000000000000697d0082b4e106000000000000030000fa010a99010d9de6144215b78a46421d6666c640359a99cf4145e2a0e15f48015a41050a0b1e29323334353637464850649601a401a601aa01ab01ad01b401b501b601b701b801c905ca05cb05cd05d105d205e605e705ef059c069e06a206a906aa06623900000013931dc8f5d00b00ee99a20200c2c88901000001ef9aa202000000000000000000000000697d0082b4e106000000000000030000fa010a99010d9de6144215b78a46421d6666c640359a99cf414566a4e15f48015a41050a0b1e29323334353637464850649601a401a601aa01ab"));
+
+ }
+
+}