For a hobby project I switched from NRF24 radio's to the RFM69 series. After reading the datasheet of the RFM69CW modules and looking at the various libraries out there, I decided to create a library myself.
The libraries I came across were all blocking and used sleeps/while statements, for example to check whether a packet had been sent before switching back to receiving mode. The radio module has a system to automatically change it's mode based on specific events called the automode system, I wanted to use this mechanism in an attempt to use the hardware as efficiently as possible. Additionally, I desired a library which only sends bytes, without introducing overhead or acknowledge systems.
The library can be found at https://github.com/iwanders/plainRFM69 (MIT License). It consists of two parts; bareRFM69, which only exposes the hardware's registers (with a lot of constants and explanation in the header file). The plainRFM69 class builds on top of bareRFM69 to provide convenient methods to send data and receive it. It also provides internal buffering for received packets. For more explanation about the inner workings I recommend reading the readme. Near the bottom of that page are results from my tests about the achieved performance. Examples in Arduino style are provided and the code is extensively commented.
I've been using the library continuously for a few weeks now, so far I'm happy with the results. I hope someone finds it useful.
The libraries I came across were all blocking and used sleeps/while statements, for example to check whether a packet had been sent before switching back to receiving mode. The radio module has a system to automatically change it's mode based on specific events called the automode system, I wanted to use this mechanism in an attempt to use the hardware as efficiently as possible. Additionally, I desired a library which only sends bytes, without introducing overhead or acknowledge systems.
The library can be found at https://github.com/iwanders/plainRFM69 (MIT License). It consists of two parts; bareRFM69, which only exposes the hardware's registers (with a lot of constants and explanation in the header file). The plainRFM69 class builds on top of bareRFM69 to provide convenient methods to send data and receive it. It also provides internal buffering for received packets. For more explanation about the inner workings I recommend reading the readme. Near the bottom of that page are results from my tests about the achieved performance. Examples in Arduino style are provided and the code is extensively commented.
I've been using the library continuously for a few weeks now, so far I'm happy with the results. I hope someone finds it useful.