WiDom is an adaptation of dominance protocols (used in the CAN bus) to a wireless channel. The main idea of the protocol is that a message stream is assigned a static priority and when message streams contend for the channel, they perform a tournament such that the highest-priority message is granted access to the channel.
During the tournament, nodes transmit the priority of the message contending for the medium bit-by-bit. But, wireless transceivers
cannot transmit and receive at the same time. Thus, when the transmitted bit is dominant
there no need to sense the medium, whereas, when the bit to transmit is recessive, nothing has to be
effectively sent, instead only the medium state has to be sensed.
Due to non-idealities in transceivers and the nature of the wireless medium, it is not obvious how these protocols should be implemented. There exist priority levels for which the protocols need to switch between transmit and receive modes for every priority bit, and this is potentially wasteful because many transceivers are not designed for frequent switching and hence every switching takes non-negligible time. It is well known that wireless channels typically have significantly higher noise levels than wired channels and that detection of pulses of short duration is difficult. For this reason, wireless communication systems often use long codes and/or spread spectrum modulation to increase the probability of a correctly received message. Unfortunately, these techniques cannot be used to transmit priority bits in the protocols: (i) long codes operate on message-level and this is too coarse; (ii) there is the need to demodulate and decode an individual bit so that a decision can be made whether the next priority bit should be transmitted. Spread spectrum modulation cannot be used on priority bits because it requires nodes that attempt to detect the priority bits are accurately synchronized with the senders: there are many senders and they can all send a priority bit at approximately the same time so a node trying to receive the priority bit cannot be synchronized with all of the senders. This makes it non-obvious whether wireless dominance protocols could work.
There are three diferent versions of WiDom implemented in nano-RK.
- Two versions that require a master synchronization node:
- Widom Single Broadcast Domain (SBD) using the CC2420 to send priority bits and data messages;
- Widom Single Broadcast Domain (SBD) using the CC2420 to send and receive data messages and the RFLINX OOK add-on board, a.k.a. wings board for bit arbitration.
These versions rely on a master node that sends a small inband synchronization packet that signals the start of a new tournament. The Start of Frame Delimiter in the packet provides a common reference point for the nodes.
- One version for Multiple Broadcast Domains (MBD) that relies on an external synchronization device.
This version of WiDom relies on an external device connected to the node that provides a global time reference at the start of every tournament. To avoid hidden nodes, during the tournament, the protocol retransmits priority bits two hops away. This is done by performing the transmission of each bit in two stages. In the first stage – Transmission stage, each node transmits its own priority bit. In the second stage – Retransmission stage, nodes retransmit the priority bit detected at the first stage. If a node transmitted or detected a dominant bit in one of the two priority bit transmission stages, then it knows that the current priority bit was dominant.