I love documentation – particularly when it is correct. Take the following example. The protocol for a GPS tracker I have been working with is somewhat strange. The header says that the length of the data is 105 bytes for instance, whereas the packet is 111 bytes long in the payload. Ahh. The 105 bytes does not include the size of the header. Problem solved.

By hey, only the first position report looks fine. The others give locations that are on the far side of the black stump, or in this case somewhere on the far side of the north pole, and given that the coordinates do not make any sense I would guess they are totally wrong. I am decoding the data using the manufacturers ’29 byte data format’. But something strange is happening. I cannot get the 29 byte payload to fit into the packet evenly, unless there is another 24 bytes somewhere. Well, maybe.

The thing is when I check the size of the position reports size field it says 35. Something does NOT line up here somewhere. What is going on? Ahh, I know. They have added another 6 bytes to the position report without updating the documentation. And guess what… It now works. The only issue is that I need to ignore the extra five bytes totally. But who cares. I am listening to a GPRS tracking unit that I have NEVER seen… and the unit is on the other side of the world, in one of thouse countries where they do not put air conditioners in cars, and put a jumper on the radiator to keep it warm… Fun