Reception Confirmation (ACK)
When the server receives a report from the device, it must respond with an ACK (acknowledge) to confirm correct reception.
📋 ACK Format
>ACK;#NNNN;ID=XXXX;*CC<| Field | Description |
|---|---|
ACK | Confirmation command |
#NNNN | Message number of the received report (hex) |
ID=XXXX | Device ID |
*CC | Checksum |
💬 Complete Example
1. Device sends report
>RCY00020205000000-2778467-06425658000000-000090;DFFFFFF;IGN1;IN00;XP00;#0021;ID=1234;*59<2. Server responds ACK
>ACK;#0021;ID=1234;*72<The #0021 must match exactly with the report message number.
📱 Simplified ACK (SMS)
To respond from a mobile phone to an SMS report, the short version can be used:
>ACK;#0021<Without ID or checksum, but maintains the message number.
⚠️ Behavior without ACK
If the device doesn’t receive ACK:
| Step | Action |
|---|---|
| 1 | Stores the report in buffer (BlackBox) |
| 2 | Retries sending |
| 3 | After several attempts, switches to secondary IP |
🔄 Commands with Message Number
The server can send commands with message number (range 0x8000 - 0xFFFF) to receive confirmation from the device.
Example
Server sends:
>SSSXP0011;#8001;ID=1234;*6A<Device responds:
>RSSXP0011;#8001;ID=1234;*6B<The response with #8001 confirms that the command was executed.
🔢 Message Number Ranges
| Range | Origin | Use |
|---|---|---|
0x0000 - 0x7FFF | Device → Server | Automatic reports |
0x8000 - 0xFFFF | Server → Device | Commands with confirmation |
🧮 Checksum Calculation
The checksum (*CC) is calculated by performing XOR of all characters from > to * (not including the *).
👉 Use the Checksum Analyzer to calculate and verify checksums.
See Also
Last updated