<h1>PicoNet.1 messages</h1>
A PicoMessage.1 is sent by a master PicoNode.1 after bounding the bus. It has the following format:

<table>
 <tr>
  <th>Bytes
  <th>Bits
  <th>Name
  <th>Description
 <tr>
  <td>0
  <td>0
  <td>REQ
  <td>1 if the message is a request, 0 if it's a notification.
 <tr>
  <td>0
  <td>1..3
  <td>RSV
  <td>Reserved
 <tr>
  <td>0
  <td>4..7
  <td>LEN
  <td>Length of the DAT field in bytes
 <tr>
  <td>1
  <td>*
  <td>CMD
  <td>Message command
 <tr>
  <td>2..LEN+1
  <td>*
  <td>DAT
  <td>0 to 15 bytes of message data
 <tr>
  <td>LEN+2
  <td>*
  <td>CRC
  <td>A 8-bit CRC checksum


</table>

There are two types of message: request and notifications. Requests was the REQ bit enabled expects a response, while notifications only expects an ACK bit.

After the message, a bit (60ms) of silence must be inserted.

Then, if the message was a notification, the slave nodes should send the ACK bit. The ACK bits are transparently AND'ed by the physical layer and the master can send another message after inserting another bit of silence.

If the message was a request, a response with the following structure must be send by the slave nodes.
<table>
 <tr>
  <th>Bytes
  <th>Bits
  <th>Name
  <th>Description
 <tr>
  <td>0
  <td>0
  <td>ACK
  <td>1 if the request was correctly received.
 <tr>
  <td>0
  <td>1..3
  <td>RSV
  <td>Reserved
 <tr>
  <td>0
  <td>4..7
  <td>LEN
  <td>Length of the DAT field in bytes
 <tr>
  <td>1..LEN
  <td>*
  <td>DAT
  <td>0 to 15 bytes of message data
 <tr>
  <td>LEN+1
  <td>*
  <td>CRC
  <td>A 8-bit CRC checksum
</table>

When sending the response, all the slave nodes must check every 1 symbol which is sent. If it's overwritten by another node, then the node inhibits and changes to the idle state.

When the request CRC isn't correct, a 0 is sent in the ACK field and all the nodes return to the idle state and no more bits are sent. Then, the master must release the bus and a new master election begins.