BearBus is a message protocol intended for use on UART and similar interfaces. It allows for communication between a single host and up to 127 devices using
up to 60 command codes.

Messages can contain up to 240 bytes of extra data which is either CRC-8 (up
to 13 bytes of data) or CRC-16 verified (14-240 bytes). The total message
length is thus between 5 bytes (a single data byte) and 247 bytes (5 byte
header, 240 bytes data, 2 bytes CRC-16).

All commands either originate from host or have host as their destination.
There is no inter-device communication.

There are three distinct versions of packet:

  • Short (only 5-byte header with a single byte of embedded data)
  • Basic (up to 13 bytes of data are supported)
  • Long (up to 240 bytes of data are supported)

Packet is defined as follows:

Octet 7 6 5 4 3 2 1 0
0:1 Header (0xBB)
1:1 Origin Address
2:1 Reply/Error EmbedData CommandCode
3:1 DataLength EmbedData=0
3:1 Datum EmbedData=1
4:1 HeaderCRC8
5:N Data EmbedData=0
5+N:1 DataCRC8 EmbedData=0, DataLength<=13
5+N:2 DataCRC16 EmbedData=1, DataLength>13

More details available on GitHub.