Frames are transmitted with the least signicant bit first, and encoded using differential manchester encoding.
Example short (real time usage) frame:
bit 54 bit 0 | | 010011010000111 00000000111111100100 100100110000 01011111 ||||||||||||||| checksum | unknown ||||||||||||||||||| pulse duration |||||||| device id ||| channel | frame type |||||||| preamble
Example long (usage) frame:
bit 70 bit 0 | | 010011111001011 000000000000000010111110011111010011 100100110001 01011111 ||||||||||||||| checksum | overflow? | low battery |||||||||||||||||||||||||||||||||| pulse count |||||||| device id ||| channel | frame type |||||||| preamble
Preamble (both long and short frames)
The first 8 (or possibly just 7) bits are the preamble, and are mainly used to synchronize the transmitter and receiver.
It’s possible that the last bit of the preamble is actually part of the header. If I set this bit, the receiver discards the frame, which could both be interpreted as a broken preamble, or a unknown frame type.
Frame Type (both long and short frames)
Determines the payload type of the frame, 0=short frame, 1=long frame.
Channel (both long and short frames)
The receiver can track up to 5 different transmitters at the same time. These transmitters are differentiated by there channel number, which is selected by using a small switch on the transmitter itself.
The channel also determines the delay the transmitter sleeps between sending frames, possible to reduce the risk of two transmitters sending at the same time.
Device ID (both long and short frames)
This value changes every time the transmitter is reset, this leads me to believe that it’s used to discriminate between multiple transmitters on the same channel.
Checksum (both long and short frames)
More info about the checksum algorithm.
Pulse Duration (only short frames)
The duration in 1/1024 seconds between the last two seen pulses.
Overflow? (only long frames)
I have never seen the transmitter set this bit, but when I send a package with this bit set, the receiver just displayed “9Error”.
Low Battery (only long frames)
The transmitter sets this bit when its battery is running low.
Pulse Count (only long frames)
The number of pulses the receiver have counted so far.