Releases: adafruit/Adafruit_CircuitPython_RFM9x
Implement Reliable Datagram Mode
Implemented compatibility with the RadioHead library "Reliable DataGram" mode.
Received packets are "ACKed" and Transmitted packets wait for ACK response.
BREAKING CHANGES
There are "breaking changes" for anyone that had been setting the RadioHead headers directly.
There are now attributes for setting the header parameters and the rx_filter parameter for the receive function has been removed.
for send() the kwarg tx_header has been replaced by 4 individual kwargs: destination, node, identifier, flags
It is not normally necessary use the destination, node, identifier or flags awards when calling send()
They should be set during initialization using the attributes node and destination as in the examples.
The identifier and flags attributes are set automatically when using send_with_ack()
For a non-acked send() they may be set manually either via the attributes or kwargs
send() now returns a boolean status - if True, the send was completed, if False, the send timed out. Previously a Runtime error was thrown on the time out.
Notes
It has been difficult to make this work reliably. Packets will still be missed occasionally but now they will be reported. There are attributes that can be "tweaked" to help
rfm9x.ack_delay -- set a delay before the ACK packet is sent - this is necessary when the receive unit an MCU communication to a Raspberry Pi . The MCU can send it's ACK packet before the Raspberry Pi has resumed "listening". The default setting is "None" but setting it to .1 seconds may be necessary. The Arduino RadioHead library does not allow for this "ack_delay" and it it may be difficult to get this to work, especially with a Raspberry Pi.
rfm9x.retries -- set the number of ack retries
All of the existing examples will still execute without change.
There are examples for using this mode in rfm9x_node1_ack.py and rfm9x_node2_ack.py
other new examples
rfm9x_header.py -- receive packets and display the header and packet contents
rfm9x_node1.py -- uses adresses without ACK
rfm9x_node2.py -- companion to rfm9x_node1.py
rfm9x_rpi_simpletest.py - no LED and set pins for RaspBerry Pi
rfm9x_node1_bonnet.py -- similar to rfm9x_node1.py but for use with RPi and bonnet -- uses buttons to send packets
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip3 install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.
1.3.1 - Added Black check, reran Black with Python 3 target.
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip3 install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.
1.3.0 - Upgrade to latest Pylint, implement Black formatting
We have upgraded Pylint checks to use the latest version of Pylint and implemented usage of Black Python formatting. This does not change the functionality of the code - it is designed to bring it up to current standards and make it more readable.
- Remove pinned Pylint version number from build.yml file
- Synced
.pylintrc
file to match Adafruit standard - Ran upgraded Pylint and applied any changes or new disables necessary
- Ran Black formatter and allowed application of changes across entire repo
For more information on using Pylint and Black on your code, check out this guide on working with Pylint and Black
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip3 install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.
1.2.2 - Update intersphinx link
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip3 install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.
1.2.1 - Changed CI from Travis to GitHub Actions
This release includes:
- Migrating this repository from Travis to GitHub Actions. This has no effect on the behavior of the code itself.
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip3 install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.
Enable interrupts for received packets
-
#33
send
andreceive
methods modified to allow interrupts from user-code. -
#33
send
can now listen after a packet is sent using new kwargkeep_listening
To use in CircuitPython, simply install the [Adafruit CircuitPython bundle] (https://github.com/adafruit/Adafruit_CircuitPython_Bundle).
To use in CPython, pip install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.
Fix GitHub repository URL to the correct value
- Repo URL updated to the correct URL for compatibility with
circup
, thanks @ntoll
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.
Check RFM9x version and more verbose errors
- Incorrectly setting
tx_power
andfrequency_mhz
throws errors describing the accepted range - RFM9x now checks version to verify correct wiring
Thanks @terriko!
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.
Expose radio configuration settings as properties
This release adds optional control properties to easily modify the modem's configuration. Thanks @applio! #21
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.
Update Simpletest
Updated simpletest to blink on-board LED when packets are received.
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.
To use in CPython, pip install adafruit-circuitpython-rfm9x
.
Read the docs for info on how to use it.