## 2 Low-Power Wireless Technologies
### Time-Slotted Channel Hopping  
Time-slotted channel hopping (TSCH) is a MAC protocol aimed at periodic sensing scenarios and the core of numerous low-power wireless standards for industrial applications, such as ISA (international society of automation) 100.11a [11], WirelessHART [12] and IEEE 802.15.4e [9]. As the most recent standard, IEEE 802.15.4e was published in 2012 as an amendment to the medium access control (MAC) protocol defined by the IEEE 802.15.4-2011 [13] standard. The IEEE 802.15.4 physical (PHY) layer is defined to operate in three different ISM (industrial, scientific and medical) bands. The 868.0-868.6 MHz band, which defines three communication channels, is only available in Europe, whereas the 902-928 MHz band, which can be divided into up to thirty channels, is only available in North America. Finally, the 2,400-2,483.5 MHz band is a true worldwide unlicensed band and offers sixteen channels. The IEEE 802.15.4-2006 physical layer revision defines the maximum data rates of the 868/915 MHz and 2,450 MHz bands, setting them to rates up to 100 kbps and 250 kbps, respectively. In addition, it defines different physical layers differentiated by the modulation method used. Most of them make use of a direct sequence spread spectrum (DSSS) technique that uses either binary (BPSK) or offset quadrature phase shift keying (OQPSK), at 868/915 MHz, and only OQPSK at the 2,450 MHz band. At the medium access control (MAC) layer, the TSCH mode was designed to allow IEEE 802.15.4 devices to support a wide range of industrial applications. At its core, the medium access technique uses time synchronization to achieve ultra low-power operation and channel hopping to ensure high reliability [14]. This is very different from the \"legacy\" IEEE 802.15.4 MAC protocol and is thus better described as a \"redesign\". TSCH does not amend the physical layer, thus being able to operate on any IEEE 802.15.4-compliant radio. All motes in a TSCH network are synchronized, and time is divided in time slots. A time slot is long enough for a MAC frame of maximum size to be sent between two motes and for the receiver to reply with an acknowledgment (ACK) frame indicating correct reception. The duration of a time slot is not defined by the standard. With IEEE 802.15.4-compliant transceivers operating at the 2.4 GHz frequency band, a maximum-length frame of 127 bytes takes about 4.6 ms (milliseconds) to transmit; a shorter ACK takes about 1 ms. With a 15 ms slot (a typical duration) [15], this leaves 9.5 ms for radio management, packet handling and security operations. Time slots are grouped into one or more slot frames. A slot frame continuously repeats over time. TSCH does not impose a slot frame size. Depending on the application needs, this can range from tens to thousands of time slots. The shorter the slot frame, the more often a time slot is repeated, leading to more available bandwidth and higher throughput, but also higher energy consumption. A TSCH schedule instructs each mote what to do in every time slot: either receive, transmit or sleep. The schedule indicates, for each scheduled transmit (TX) or receive (RX) time slot, a _channelOffset_ and the address of the neighbor with which to communicate. Once a mote obtains its schedule, it executes it:  
* For every TX time slot, the mote checks whether there is a packet in the outgoing queue that matches the neighbor address specified in the schedule information for that time slot. If there is not, the mote keeps its transceiver switched off during the time slot. If there is a packet for that neighbor, the mote transmits it and can request an ACK back. In such case, the node keeps listening for the ACK after transmitting. * For every RX time slot, the mote listens to the channel for possible incoming packets. If nothing is received after some listening period, the transceiver is switched off. If a packet is received, it is either addressed to the mote or is a broadcast message, and if it passes security checks, the mote can send back an ACK.