Skip to content

Retroactive Release

Compare
Choose a tag to compare
@2bndy5 2bndy5 released this 29 Jan 02:21

This release is a retrofitting of non-breaking backward compatible features introduced in v2.0.0. However, this also fixes 1 bug that allowed a flood of subsequent errors:

  • payload_length returns the setting for only pipe 0. This attribute can still be used to set individual pipes (see docs), but in v1.2.0-v1.2.3 it returned an internal list that prevented properly setting payload lengths for individual pipes. This error would also cause malfunctions in any(), send(), resend(), recv(), and write(). Use the new get_payload_length() function to retrieve the current setting for any pipe.

New features

  • Huge Speed-up (~10x faster transmissions)!
  • Examples retrofitted to be forward compatible not backward compatible. Additionally, all examples (except nrf24l01_context_test.py and nrf24l01_fake_ble_test.py) are compatible with the new examples in TMRh20's RF24 library (I wrote those examples also 😉 ). Conversely, the examples still use time.monotonic() to preserve compatibility with CPython v3.4 where v2.0.0 now requires CPython v3.7+ on Linux (because that's when time.monotonic_ns() was introduced).
  • Examples can now also be executed from Linux CLI (no need to keep from example_name import * anymore - but you still can).
  • New scanner example (warning: it runs a bit slower on older RPi). Also replaced nrf24l01_2arduino_handling_data.py with nrf24l01_manual_ack_test.py.
  • New available() function provided as a convenience instead of using nrf.update() and nrf.pipe is not None (a technique introduced in v1.2.3). Because FakeBLE class now inherits from RF24 class, this new function is overridden in the FakeBLE class with the existing available() function to prevent breaking backward compatibility. The difference in functionality will really only affect those trying to implement receiving BLE advertisements (officially unsupported at this time) using the FakeBLE API.
  • New set_*() and get_*() methods for auto_ack, dynamic_payloads payload_length, and ard/arc attributes. ard/arc attributes are consolidated into *et_auto_retries() methods (because they live in the same register on the nRF24L01).
  • Much more underlying optimizations listed in v2.0.0 release description under "Code Changes Include" section... However, auto_ack and dynamic_payloads attributes still return boolean (not integers like in v2.0.0).

Final Release

This will likely be the last release for v1.x. I just couldn't leave users constricted to using v1.x without the huge speed-up implementation and a known bug.