Excellent hardware protocol stack, free for non-commercial. I've been consorting with the author on testing on my varieties of radio types on AVR and ARM single board (mostly very small boards like Anarduino and Teensy 2 (AVR), Teensy 3 (ARM). Most radios are 433/868/900MHz, though some are 2.4GHz. Small MCUs, and radios are thumbnail sized in most cases.
Below are listed the protocols in the stack. Each is a C++ class, clean of radio hardware dependencies except for layer 1. You can use the bottom 1 layer, bottom 2 layers, etc., up to the top layer.
Layer 1 is the hardware/PHY layer for many radio types. These are $5 full radio PC boards, for most radios, with packetizing, CRC checks, etc. Packets are up to 255 bytes of data. Bit rates for some radios are configurable to trade-off speed for range and occupied bandwidth. Most radios are GFSK/FM. Most use an interrupt to the MCU for received messge or transmit complete.
Runs on AVR/Arduino, and several ARM Cortex M's. Builds easily with Atmel Studio 6.1.
In the stack, below, many use only layer 3 and down. This uses about 16KB on an AVR.
5 Mesh network routing. Self-forming/healing.
4 Routed network (static routes), w/broadcast option
3 Reliable datagram service; peer to peer. with ACKs, timeouts, retransmission.
2 Unreliable Datagram: peer to peer, no ACKs. Like UDP.
1 Transmit raw packets. via the radio layer
Radio/PHY layer "drivers", written in C/C++.
Drivers for many radios, including HopeRF/SiLabs 443x, Dorji Nordic 2.4/900MHz, some on/off keying radios, others. More are added frequently by cloning/adapting existing drivers. Would be good to have more Atmel radio PCB module presence in this. The idea is to use PCB modules, not chips.