To calculate the checksum of an API frame:
To verify the checksum of an API frame:
Consider the following sample data packet: 7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F B8+
| Byte(s) | Description |
|---|---|
| 7E | Start delimiter |
| 00 0A | Length bytes |
| 01 | API identifier |
| 01 | API frame ID |
| 50 01 | Destination address low |
| 00 | Option byte |
| 48 65 6C 6C 6F | Data packet |
| B8 | Checksum |
To calculate the check sum you add all bytes of the packet, excluding the frame delimiter 7E and the length (the second and third bytes):
7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F B8
Add these hex bytes:
01 + 01 + 50 + 01 + 00 + 48 + 65 + 6C + 6C + 6F = 247
Now take the result of 0x247 and keep only the lowest 8 bits which in this example is 0x47 (the two far right digits). Subtract 0x47 from 0xFF and you get 0xB8 (0xFF - 0x47 = 0xB8). 0xB8 is the checksum for this data packet.
If an API data packet is composed with an incorrect checksum, the XBee/XBee-PRO S2C DigiMesh 2.4 will consider the packet invalid and will ignore the data.
To verify the check sum of an API packet add all bytes including the checksum (do not include the delimiter and length) and if correct, the last two far right digits of the sum will equal FF.
01 + 01 + 50 + 01 + 00 + 48 + 65 + 6C + 6C + 6F + B8 = 2FF