Rate Adaptation MINSTREL algorithm implementation for a Texas Instrument CC1200 HF-Transceiver on a Beaglebone with Debian
This project is still in progress. There will be an update as well as an more detailed installation manual.
mkdir build
cd build
cmake .
cmake --build ..
mkdir build
cd build
cmake -DBUILD_LOCAL_ONLY=ON ..
cmake --build ..
It's possible to build everything without unit tests. Add this flag to cmake when configuring:
cmake -DBUILD_TESTS=OFF .
The minstrel algorithm is keeping track of three rate types
- Best throughput
- 2nd best throughtput
- Highest probability
The throughput (T) of a rate is calculated as:
- succ_prob: success probability of the given rate. As a simple heuristic, we take packets_send/acks_received
- bytes_send: total bytes per packet
- duration: average time from sending till receiving an acknowledgment of the same packet
To smoothen the success probability over time (while giving more weight to recent events), we apply an exponential moving average:
(Adapted from Rate Adaptation for 802.11 Wireless Networks: Minstrel )
This code uses the https://github.com/rxi/log.c
code for logging, (last updated on 05/07/2022).