Teltonika Data Sending Protocols: Difference between revisions
Appearance
No edit summary |
|||
| (9 intermediate revisions by 4 users not shown) | |||
| Line 1,400: | Line 1,400: | ||
| style="vertical-align: middle; text-align: center;" |33 35 32 30 39 33 30 38 36 34 30 33 36 35 35 | | style="vertical-align: middle; text-align: center;" |33 35 32 30 39 33 30 38 36 34 30 33 36 35 35 | ||
|- | |- | ||
| rowspan=" | | rowspan="28" style="vertical-align: middle; text-align: center;" |AVL Data Array | ||
| style="vertical-align: middle; text-align: center;" |Codec ID | | style="vertical-align: middle; text-align: center;" |Codec ID | ||
| style="vertical-align: middle; text-align: center;" |8E | | style="vertical-align: middle; text-align: center;" |8E | ||
| Line 1,481: | Line 1,481: | ||
| style="vertical-align: middle; text-align: center;" |NX of X Byte IO | | style="vertical-align: middle; text-align: center;" |NX of X Byte IO | ||
| style="vertical-align: middle; text-align: center;" |00 00 | | style="vertical-align: middle; text-align: center;" |00 00 | ||
|- | |||
| style="vertical-align: middle; text-align: center;" |Number of Data 2 (Records) | |||
| style="vertical-align: middle; text-align: center;" |01 | |||
|- | |- | ||
|} | |} | ||
| Line 2,177: | Line 2,180: | ||
The server response in the hexadecimal stream: | The server response in the hexadecimal stream: | ||
<code> | <code>0005CAFE010701</code> <br> <br> | ||
Parsed: | Parsed: | ||
{| class="nd-othertables_2" style="width:100%;" | {| class="nd-othertables_2" style="width:100%;" | ||
| Line 2,201: | Line 2,204: | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Number of Accepted Data | | style="vertical-align: middle; text-align: center;" |Number of Accepted Data | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |01 | ||
|- | |- | ||
|} <br /> | |} <br /> | ||
| Line 2,578: | Line 2,581: | ||
'''Command Quantity 2''' – a byte that defines how many records (commands) are in the packet. This byte will not be parsed but it’s recommended that it should contain the same value as Command/Response Quantity 1. <br> | '''Command Quantity 2''' – a byte that defines how many records (commands) are in the packet. This byte will not be parsed but it’s recommended that it should contain the same value as Command/Response Quantity 1. <br> | ||
'''CRC-16''' – calculated from Codec ID to the Second Number of Data. CRC (Cyclic Redundancy Check) is an error-detecting code used to detect accidental changes to RAW data. For calculation we are using [[Codec#CRC-16|CRC-16/IBM]].<br> <br> | '''CRC-16''' – calculated from Codec ID to the Second Number of Data. CRC (Cyclic Redundancy Check) is an error-detecting code used to detect accidental changes to RAW data. For calculation we are using [[Codec#CRC-16|CRC-16/IBM]].<br> <br> | ||
'''Note:''' Codec13 packets are used only when the “Message Timestamp” parameter in RS232 settings is enabled. <br> | '''Note:''' Codec13 packets are used only when the “Message Timestamp” parameter in RS232 settings is enabled. <br> | ||
=='''<big>Codec 14</big>'''== | |||
*'''<big>About Codec14</big>''' | |||
Codec14 is the original Teltonika protocol for device-server communication over GPRS messages and it is based on the Codec12 protocol. <br> | |||
The main difference of Codec14 is that the device will answer the GPRS command if the device's physical IMEI number matches the specified IMEI number in the GPRS command. <br> | |||
Codec14 GPRS commands can be used for sending configuration, debug, digital outputs control commands, or other (special purpose commands on special firmware versions). <br> | |||
*'''<big>FMB firmware requirements</big>''' | |||
*'''<big> | Implemented in base firmware from FMB.Ver.03.25.04.Rev.00 and newer. <br> | ||
*'''<big>General Codec14 message structure</big>''' | |||
The following diagram shows the basic structure of Codec14 messages. <br> | |||
'''Command message structure''' | |||
{| class="nd-othertables_2" style="width:100%;" | {| class="nd-othertables_2" style="width:100%;" | ||
|+ | |+ | ||
! colspan=" | ! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |0x00000000 (preamble) | ||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Data size | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |0x0E (Codec ID) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Command quantity | |||
! colspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |0x05<br>(Message type) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Command size + IMEI size (8 bytes) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |IMEI (HEX) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Command | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Command quantity | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |CRC-16 | |||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |4 bytes | |||
| style="vertical-align: middle; text-align: center;" |4 bytes | |||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |4 bytes | |||
| style="vertical-align: middle; text-align: center;" |8 bytes | |||
| style="vertical-align: middle; text-align: center;" |X bytes | |||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |4 bytes | |||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | |} | ||
| style="vertical-align: middle; text-align: center;" | | |||
'''Response message structure''' | |||
{| class="nd-othertables_2" style="width:100%;" | |||
|+ | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |0x00000000 (preamble) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Data size | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |0x0E (Codec ID) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Response quantity | |||
! colspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |0x06 / 0x11 (Message type) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Response size + IMEI size (8 bytes) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |IMEI (HEX) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Response | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Response quantity | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |CRC-16 | |||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |4 bytes | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |4 bytes | ||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |4 bytes | |||
| style="vertical-align: middle; text-align: center;" |8 bytes | |||
| style="vertical-align: middle; text-align: center;" |X bytes | |||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |4 bytes | |||
|- | |- | ||
|} | |||
|} | |||
'''Preamble''' – the packet starts with four zero bytes. <br> | |||
'''Data Size''' – size is calculated from the Codec ID field to the second command or response quantity field. <br> | |||
'''Codec ID''' – in Codec14 it is always <code>0x0E</code>. <br> | |||
'''Command/Response Quantity 1''' – it is ignored when parsing the message. <br> | |||
'''Type''' – if it is a request command from the server it has to contain 0x05. The response type field will contain <code>0x06</code> if it’s ACK or <code>0x11</code> if it’s nACK. <br> | |||
''Explanation:'' If command message IMEI is equal to actual device IMEI, received command will be executed and response will be sent with ACK (<code>0x06</code>) message type field value. If the command message IMEI doesn’t match the actual device IMEI, the received command won’t be executed and a response to the server will be sent with nACK (<code>0x11</code>) message type field value. <br> | |||
'''Command/Response Size''' – command or response length. <br> | |||
''Note:'' make sure that size is IMEI size 8 + actual command size. The minimal value is 8 because Codec14 always contains IMEI and it’s 8 bytes. <br> | |||
'''IMEI (HEX)''' – it is send as HEX value. For example, if the device IMEI is 123456789123456 then the IMEI data field will contain <code>0x0123456789123456</code> value. <br> | |||
'''Command/Response''' – command or response in HEX. <br> | |||
'''Command/Response Quantity 2''' - a byte that defines how many records (commands or responses) are in the packet. This byte will not be parsed but it’s recommended that it should contain the same value as Command/Response Quantity 1. <br>'''CRC-16''' – calculated from Codec ID to the Second Number of Data. CRC (Cyclic Redundancy Check) is an error-detecting code used to detect accidental changes to RAW data. For calculation we are using [[Codec#CRC-16|CRC-16/IBM]].<br> | |||
*'''<big> | *'''<big>GPRS in Codec14 examples</big>''' | ||
The hexadecimal stream of the GPRS command and answer in this example is given in the hexadecimal form. The different fields of the message are separated into different table columns for better readability and some of them are converted to ASCII values for better understanding. <br> <br> | |||
The | Sending ''[[FMB getver|getver]]'' SMS command via GPRS Codec14: <br> <br> | ||
Server requests in Hexadecimal stream: <br> | |||
<code>00000000000000160E01050000000E0352093081452251676574766572010000D2C1</code> <br> <br> | |||
Parsed: | |||
{| class="nd-othertables_2" style="width:100%;" | |||
|+ | |||
! colspan="2" style="border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Server Command | |||
|- | |||
! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |Server Command Part | |||
! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |HEX Code Part | |||
{| class="nd-othertables_2" style="width:100%;" | |||
|+ | |||
! colspan=" | |||
! rowspan="1" style="width: | |||
! rowspan="1" style="width: | |||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Zero Bytes | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
|- | |- | ||
| | | style="vertical-align: middle; text-align: center;" |Data Size | ||
| style="vertical-align: middle; text-align: center;" |00 00 00 16 | |||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Codec ID | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |0E | ||
| | |- | ||
| style="vertical-align: middle; text-align: center;" |1 | | style="vertical-align: middle; text-align: center;" |Command Quantity 1 | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |01 | ||
| | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Command Type | ||
| style="vertical-align: middle; text-align: center;" |05 | |||
| style="vertical-align: middle; text-align: center;" | | |||
|- | |- | ||
| | | style="vertical-align: middle; text-align: center;" |Command Size | ||
| style="vertical-align: middle; text-align: center;" |00 00 00 0E | |||
|- | |||
| style="vertical-align: middle; text-align: center;" |IMEI | |||
| style="vertical-align: middle; text-align: center;" |03 52 09 30 81 45 22 51 | |||
|- | |||
| style="vertical-align: middle; text-align: center;" |Command | |||
| style="vertical-align: middle; text-align: center;" |67 65 74 76 65 72 | |||
|- | |||
| style="vertical-align: middle; text-align: center;" |Command Quantity 2 | |||
| style="vertical-align: middle; text-align: center;" |01 | |||
|- | |||
| style="vertical-align: middle; text-align: center;" |CRC-16 | |||
| style="vertical-align: middle; text-align: center;" |00 00 D2 C1 | |||
|- | |||
|} | |||
Note that Server Command converted from HEX to ASCII means ''[[FMB getver|getver]]'' <br> <br> | |||
Device ACK response in the hexadecimal stream: <br> | |||
<code>00000000000000AB0E0106000000A303520930814522515665723A30332E31382E31345F3034204750533A41584E5F352E31305F333333332048773A464D42313230</code> | |||
<code> | <code>204D6F643A313520494D45493A33353230393330383134353232353120496E69743A323031382D31312D323220373A313320557074696D653A3137323334204D4143</code> | ||
<code>3A363042444430303136323631205350433A312830292041584C3A30204F42443A3020424C3A312E362042543A340100007AAE</code> <br> <br> | |||
Parsed: | Parsed: | ||
{| class="nd-othertables_2" style="width:100%;" | {| class="nd-othertables_2" style="width:100%;" | ||
|+ | |+ | ||
! colspan="2" style="border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" | | ! colspan="2" style="border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Device Answer | ||
|- | |- | ||
! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" | | ! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |Device Answer Part | ||
! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |HEX Code Part | ! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |HEX Code Part | ||
|- | |- | ||
| Line 2,732: | Line 2,732: | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Data Size | | style="vertical-align: middle; text-align: center;" |Data Size | ||
| style="vertical-align: middle; text-align: center;" |00 00 00 | | style="vertical-align: middle; text-align: center;" |00 00 00 37 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Codec ID | | style="vertical-align: middle; text-align: center;" |Codec ID | ||
| style="vertical-align: middle; text-align: center;" |0E | | style="vertical-align: middle; text-align: center;" |0E | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Response Quantity 1 | ||
| style="vertical-align: middle; text-align: center;" |01 | | style="vertical-align: middle; text-align: center;" |01 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Response Type | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |06 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Response Size | ||
| style="vertical-align: middle; text-align: center;" |00 00 00 | | style="vertical-align: middle; text-align: center;" |00 00 00 A3 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |IMEI | | style="vertical-align: middle; text-align: center;" |IMEI | ||
| style="vertical-align: middle; text-align: center;" |03 52 09 30 81 45 22 51 | | style="vertical-align: middle; text-align: center;" |03 52 09 30 81 45 22 51 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Response | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |56 65 72 3A 30 33 2E 31 38 2E 31 34 5F 30 34 20 47 50 53 3A 41 58 4E 5F 35 2E 31 30 5F 33 33 33 33 20 48 77 3A 46 4D 42 31 32 30 20 4D 6F 64 3A 31 35 20 49 4D 45 49 3A 33 35 32 30 39 33 30 38 31 34 35 32 32 35 31 20 49 6E 69 74 3A 32 30 31 38 2D 31 31 2D 32 32 20 37 3A 31 33 20 55 70 74 69 6D 65 3A 31 37 32 33 34 20 4D 41 43 3A 36 30 42 44 44 30 30 31 36 32 36 31 20 53 50 43 3A 31 28 30 29 20 41 58 4C 3A 30 20 4F 42 44 3A 30 20 42 4C 3A 31 2E 36 20 42 54 3A 34 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Response Quantity 2 | ||
| style="vertical-align: middle; text-align: center;" |01 | | style="vertical-align: middle; text-align: center;" |01 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |CRC-16 | | style="vertical-align: middle; text-align: center;" |CRC-16 | ||
| style="vertical-align: middle; text-align: center;" |00 00 | | style="vertical-align: middle; text-align: center;" |00 00 7A AE | ||
|- | |- | ||
|} | |} | ||
Note that | Note that Device Response converted from HEX to ASCII means: <br> | ||
Device | ''Ver:03.18.14_04 GPS:AXN_5.10_3333 Hw:FMB120 Mod:15 IMEI:352093081452251 Init:2018-11-22 7:13 Uptime:17234 MAC:60BDD0016261 SPC:1(0) AXL:0 OBD:0 BL:1.6 BT:4'' <br> <br> | ||
<code> | Device nACK response in the hexadecimal stream: <br> | ||
<code>00000000000000100E011100000008035209308145246801000032AC</code> <br> <br> | |||
Parsed: | Parsed: | ||
{| class="nd-othertables_2" style="width:100%;" | {| class="nd-othertables_2" style="width:100%;" | ||
| Line 2,778: | Line 2,777: | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Data Size | | style="vertical-align: middle; text-align: center;" |Data Size | ||
| style="vertical-align: middle; text-align: center;" |00 00 00 | | style="vertical-align: middle; text-align: center;" |00 00 00 10 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Codec ID | | style="vertical-align: middle; text-align: center;" |Codec ID | ||
| Line 2,787: | Line 2,786: | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Response Type | | style="vertical-align: middle; text-align: center;" |Response Type | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |11 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Response Size | | style="vertical-align: middle; text-align: center;" |Response Size | ||
| style="vertical-align: middle; text-align: center;" |00 00 00 | | style="vertical-align: middle; text-align: center;" |00 00 00 08 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |IMEI | | style="vertical-align: middle; text-align: center;" |IMEI | ||
| style="vertical-align: middle; text-align: center;" |03 52 09 30 81 45 | | style="vertical-align: middle; text-align: center;" |03 52 09 30 81 45 24 68 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Response Quantity 2 | | style="vertical-align: middle; text-align: center;" |Response Quantity 2 | ||
| Line 2,802: | Line 2,798: | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |CRC-16 | | style="vertical-align: middle; text-align: center;" |CRC-16 | ||
| style="vertical-align: middle; text-align: center;" |00 00 | | style="vertical-align: middle; text-align: center;" |00 00 32 AC | ||
|- | |- | ||
|} | |} <br /> | ||
=='''<big>Codec 15</big>'''== | |||
*'''<big>Protocol Overview</big>''' | |||
Codec 15 relies on the Codec12 protocol and is employed when both message timestamp and device IMEI are enabled. It serves as the original Teltonika protocol for communication from the device to the server via GPRS messages. This protocol is exclusively applicable to FMX6 professional devices. | |||
Codec15 is available in RS232 modes: | |||
1. TCP/UDP Ascii | |||
<br>2. TCP/UDP Binary | |||
<br>3. TCP/UDP Ascii Buffered | |||
<br>4. TCP/UDP Binary Buffered. | |||
*'''<big>Structure of Codec 15 messages</big>''' | |||
' | |||
{| class="nd-othertables_2" style="width:100%;" | {| class="nd-othertables_2" style="width:100%;" | ||
|+ | |+ | ||
! colspan=" | ! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |0x00000000 (Preamble) | ||
! rowspan="1" style="width:5%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Data Size | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |0x0F (Codec ID) | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Command quantity | |||
! colspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Message type | |||
! rowspan="1" style="width:14%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Command size + timestamp + imei | |||
! rowspan="1" style="width:5%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Timestamp | |||
! rowspan="1" style="width:5%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |IMEI | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Command | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Command quantity | |||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |CRC - 16 | |||
|- | |- | ||
! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |4 bytes | ||
! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |HEX Code Part | | style="vertical-align: middle; text-align: center;" |4 bytes | ||
|- | | style="vertical-align: middle; text-align: center;" |1 byte | ||
| style="vertical-align: middle; text-align: center;" |Zero Bytes | | style="vertical-align: middle; text-align: center;" |1 byte | ||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |4 byte | |||
| style="vertical-align: middle; text-align: center;" |4 bytes | |||
| style="vertical-align: middle; text-align: center;" |8 bytes | |||
| style="vertical-align: middle; text-align: center;" |X bytes | |||
| style="vertical-align: middle; text-align: center;" |1 bytes | |||
| style="vertical-align: middle; text-align: center;" |4 bytes | |||
|- | |||
|} | |||
*'''<big>Structure explanation</big>''' | |||
'''Preamble''' - four zero bytes. | |||
<br>'''Data size''' - size is calculated from codec id(0x0F) field to the second command quantity field. | |||
<br>'''Codec ID''' - in Codec 15 it is always 0x0F. | |||
<br>'''Command quantity''' - a number which defines how many commands are in the packet. | |||
<br>'''Message type''' - this value is configurable in RS232 settings box. | |||
<br>'''Command size + Timestamp + IMEI''' - it is equal to size of payload + size of timestamp + size of imei. | |||
<br>'''Timestamp''' – data record creation time in seconds(Unix timestamp). | |||
<br>'''IMEI''' - send as HEX value. Example if device IMEI is 123456789123456 then IMEI data field will contain 0x0123456789123456 value. | |||
<br>'''Command field''' - actual received data. | |||
<br>'''Command quantity''' - a number which defines how many commands are in the packet. | |||
<br>'''CRC field''' - calculated from Codec ID to the Second Number of Data. | |||
*'''<big>Codec 15 examples</big>''' | |||
Device sends message „Hello\n“ via GPRS Codec15: | |||
000000000000001b0f010b00000013654b65a4012345678912345648656c6c6f210a01000093d6 | |||
{| class="nd-othertables_2" style="width:100%;" | |||
! colspan="2" style="border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Parsed command | |||
|- | |||
! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |Command Part | |||
! rowspan="1" style="width:50%; vertical-align: middle; text-align: center;" |HEX Code Part | |||
|- | |||
| style="vertical-align: middle; text-align: center;" |Zero Bytes | |||
| style="vertical-align: middle; text-align: center;" |00 00 00 00 | | style="vertical-align: middle; text-align: center;" |00 00 00 00 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Data Size | | style="vertical-align: middle; text-align: center;" |Data Size | ||
| style="vertical-align: middle; text-align: center;" |00 00 00 | | style="vertical-align: middle; text-align: center;" |00 00 00 1B | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |Codec ID | | style="vertical-align: middle; text-align: center;" |Codec ID | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |0F | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Quantity of commands | ||
| style="vertical-align: middle; text-align: center;" |01 | | style="vertical-align: middle; text-align: center;" |01 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Command type | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |0B | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Command Size | ||
| style="vertical-align: middle; text-align: center;" |00 00 00 | | style="vertical-align: middle; text-align: center;" |00 00 00 13 | ||
|- | |||
| style="vertical-align: middle; text-align: center;" |Timestamp | |||
| style="vertical-align: middle; text-align: center;" |65 4B 65 A4 | |||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |IMEI | | style="vertical-align: middle; text-align: center;" |IMEI | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |01 23 45 67 89 12 34 56 | ||
|- | |||
| style="vertical-align: middle; text-align: center;" |Command | |||
| style="vertical-align: middle; text-align: center;" |48 65 6c 6c 6f 21 0a | |||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Quantity of commands | ||
| style="vertical-align: middle; text-align: center;" |01 | | style="vertical-align: middle; text-align: center;" |01 | ||
|- | |- | ||
| style="vertical-align: middle; text-align: center;" |CRC-16 | | style="vertical-align: middle; text-align: center;" |CRC-16 | ||
| style="vertical-align: middle; text-align: center;" |00 00 | | style="vertical-align: middle; text-align: center;" |00 00 93 D6 | ||
|- | |- | ||
|} | |} | ||
CRC: 0x 000093d6 | |||
The algorithm to calculate CRC is CRC-16 (also known as CRC-16-IBM). All the fields from codec ID to second command/response quantity field are used to calculate CRC. | |||
=='''<big>Differences between Codec 12, Codec 13 and Codec | =='''<big>Differences between Codec 12, Codec 13, Codec 14 and Codec 15</big>'''== | ||
In the table below you will see differences between Codec12, Codec13, and | In the table below you will see differences between Codec12, Codec13, Codec14 and Codec 15. | ||
{| class="nd-othertables_2" style="width:100%;" | {| class="nd-othertables_2" style="width:100%;" | ||
|+ | |+ | ||
| Line 2,856: | Line 2,915: | ||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Codec13 | ! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Codec13 | ||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Codec14 | ! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Codec14 | ||
! rowspan="1" style="width:10%; border-bottom: 2px solid #0054A6; vertical-align: middle; text-align: center;" |Codec15 | |||
|- | |||
! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" |Communication | |||
| style="vertical-align: middle; text-align: center;" |Server - Device Communication | |||
| style="vertical-align: middle; text-align: center;" |One-way (Device -> Server communication) | |||
| style="vertical-align: middle; text-align: center;" |Server - Device Communication | |||
| style="vertical-align: middle; text-align: center;" |One-way (Device -> Server communication) | |||
|- | |- | ||
! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" | | ! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" |Codec ID | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |0x0C | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |0x0D | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |0x0E | ||
|- | | style="vertical-align: middle; text-align: center;" |0x0F | ||
! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" | | |- | ||
| style="vertical-align: middle; text-align: center;" | | ! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" |Response Message Type | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |0x06 | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" | - | ||
|- | | style="vertical-align: middle; text-align: center;" |0x06 (if it is ACK) or 0x11 (if it is nACK) | ||
! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" |Response | | style="vertical-align: middle; text-align: center;" | - | ||
| style="vertical-align: middle; text-align: center;" | | |- | ||
| style="vertical-align: middle; text-align: center;" | - | ! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" |Command / Response size | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Only Command/Response | ||
|- | | style="vertical-align: middle; text-align: center;" |Only Command | ||
! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Command/Response + IMEI | ||
| style="vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Command + IMEI | ||
| style="vertical-align: middle; text-align: center;" | | |- | ||
| style="vertical-align: middle; text-align: center;" | | ! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" |Timestamp | ||
|- | | style="vertical-align: middle; text-align: center;" |Not Using | ||
! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" | | | style="vertical-align: middle; text-align: center;" |Is Using | ||
| style="vertical-align: middle; text-align: center;" |Not Using | |||
| style="vertical-align: middle; text-align: center;" |Is Using | |||
|- | |||
! rowspan="1" style="width:10%; vertical-align: middle; text-align: center;" |IMEI | |||
| style="vertical-align: middle; text-align: center;" |Not Using | |||
| style="vertical-align: middle; text-align: center;" |Not Using | | style="vertical-align: middle; text-align: center;" |Not Using | ||
| style="vertical-align: middle; text-align: center;" |Is Using | | style="vertical-align: middle; text-align: center;" |Is Using | ||
| style="vertical-align: middle; text-align: center;" |Is Using | | style="vertical-align: middle; text-align: center;" |Is Using | ||
|- | |- | ||