FastArduino 1.9 release
I am happy to announce the 10th major release of FastArduino platform.
Since release 1.8 (October 2021), the main changes are listed there.
This release brings the following changes and improvements:
- Support for Grove 125KHz RFID reader
- Prevention of dynamic allocation (too dangerous on target AVR MCU)
- Code and data size improvement by removing
virtual
methods in Futures, ostreambuf - API simplification by removing useless Lifecycle support
- Improvement of
TonePlayer
API (newBeat
type) - Improve I2C support utilities (e.g. with functors)
- Add new bits utility functions
- Add
swap_bytes()
functions for 64-bits words - Fix bad includes of "streams.h" in some API (preventing proper use of "empty_streams.h")
- Fixing various issues in API documentation
Known bugs and requests for enhancements: https://github.com/jfpoilpret/fast-arduino-lib/issues
The platform is well documented:
- a tutorial allows developers to discover and learn the platform step by step
- FastArduino core API is documented through doxygen and documentation is published here
- FastArduino comes with many examples covering all supported features and devices
I hope you'll enjoy playing with FastArduino platform; please submit enhancements you would like
to see in future versions or report issues you may discover.
Notes on upgrading to 1.9 version
Several changes in 1.9 may break some existing programs.
- dynamic allocation disabled: if your code is using
new
ordelete
it will not compile anymore; this decision was made to avoid dynamic allocation in AVR MCU programs, because dynamic allocation may fragment the heap which size is too limited on AVR; it is always preferrable to use static data (or stack data) for everything. - ostreambuf
virtual
methods removed: if you use UART (hardware or software) for serial reception, you will need to register the used UART type as an ostreambuf listener withREGISTER_OSTREAMBUF_LISTENERS()
. - Future
virtual
methods removed: if you use I2C devices, you will need to callREGISTER_FUTURE_STATUS_LISTENERS()
,REGISTER_FUTURE_OUTPUT_LISTENERS()
, or their oppositesREGISTER_FUTURE_STATUS_NO_LISTENERS()
,REGISTER_FUTURE_OUTPUT_NO_LISTENERS()
. - if you use
TonePlayer
you will need to use newBeat
instances (instead of previously integral BPM) toplay_xxx()
methods.
You may check updated examples for concrete code showing the new adaptations needed.