Message Format

Overview

The picture below shows the layout of a message frame on the bus.

message_frame

A message frame consists of following parts:

message_frame {
start_bit : 1,
wire_id : 8,
continue_bit : 1,
data_length : 3,
data[data_length + 1] {
data : 8
},
stop_bit : 1
}

 Start Bit

Start bit notifies transferring a frame begins.  Always one dominant bit.  The receiver must start receiving the frame.

Wire ID

Wire ID is represented by 8 bit integer, MSB first.  A wire ID identifies transfer channel of data in the bus.  This ID may also used for conflict resolution.  Sender must also read wire ID from the bus.  If there is a conflict, read ID would be different from sent ID.  In such a case, sender must not continue and start over the transfer later.

Continue Bit

The sender should continue the frame if no conflict was found in the wire ID.  Sender must set dominant to continue bit to proceed.  This bit would be recessive if all senders back off for conflict, so receiver must stop reading the frame and start over for another frame.

Data Length

Three bit integer, MSB first.  Number of data bytes is data length plus 1.  So possible number of data bytes is from 1 to 8.

Data Bytes

8 bit integer, MSB first, repeating data_length + 1 times.

Stop Bit

Always recessive.  Maybe replaced by some simple CRC.