This was a big release with lots of updates and improvements, including a major update to Hexabitz backend! Check out the following Wiki articles for more details: Communication Backend, Array Messaging, EEPROM Emulation.
New Modules
- H26R00: Load cell (strain gauge) sensor module.
- H07R31: A new hardware revision of H07R30 module that introduces bigger MCU Flash and an improved audio path. It is available as a second target to H07R3x firmware project.
- H0FR10: SPDT mechanical DC relay module. It is available as a second target to H0FR6x firmware project.
- P01R00: This module used to have its own repository. Starting this release, it will be bundled with H01R0x firmware as a second target.
- P08R60: Time-of-Flight IR sensor module. It is available as a second target to H08R6x firmware project.
New Features
- The BOS backend is completely revamped with an improved messaging scheme, circular receive buffers and improved DMA handling. BOS messages are now transmitted as a single packet (including the length byte), and terminated with an actual CRC8 byte instead of 0x75. Message start is marked with two delimiters – the characters ‘H’ and ‘Z’. The circular buffers are able to receive multiple messages on multiple ports at the same time and queue them for processing.
- Adding a Backend Task to handle parsing and processing of circular buffers and activate the appropriate Messaging Task.
- Separating Option bits from message codes in the message frame, leaving 16 bits for message codes. Message codes can be transmitted in either one- or two- byte format.
- Adding an Option Byte with bits controlling Message Trace and Response, as well as indicating long messages. The Option Byte can be extended as well for future applications.
- Adding ReadRemoteParam API to read module parameters remotely by giving the textual parameter name in message parameters.
- Adding BOS port-forward message to remotely forward data to a specific port.
- Adding “play tune” message to H07R3.
- Adding port bridge/unbridge functionality to the BOS (APIs + CLI commands). You can easily bridge any two array ports, and they will transfer data between each other seamlessly. The bridge will be stored in the emulated EEPROM as well.
- In USB-UART converter modules (H1AR1, H1AR2, H1AR3), the USB port is automatically bridged to its opposite module port on startup. Thus, you can use the module as a USB-UART converter on the fly. You can connect to a different CLI port and unbridge the USB and its opposite port to use them in a different configuration.
- Adding a new API to BOS which print strings on a given port – printfp().
- H1BR6 (Micro SD card memory) module now has WAVE file parsing and streaming functionality. The card can be scanned for WAVE files and a particular file can be parsed and streamed to a specific port (or a remote port in a remote module).
- H07R3 (audio amplifier and speaker) module now have WAVE play from a port functionality. The module can play any WAVE file streamed to one of its ports. This functionality can be combined with the one in the H1BR6 to create a mini WAVE player device!
Improvements
- All main and submodule repositories were transferred from Bitbucket to GitHub.
- P01R0 module firmware was merged with H01R0 firmware as a second uVision target, which ensures that these two modules are developed together and reduces entropy with repositories and projects.
- Multiple memory improvements and optimizations to reduce SRAM and Flash usage.
- ARM compiler optimization level was increased to O1.
- Moved all Message Codes into a central BOS header file so that they can be referenced from all modules.
- Rearranged EEPROM addressing space and divided it into BOS, Module and User space. The total addressing space was increased to its full size of 1024.
- Moved MCU memory map into a separate header file located with module drivers.
- Refactored SendMessageFromPort API to cover multiple cases and added a BroadcastMessage API.
- Rearranged Tasks and their priority and renamed the UART task into CLI task.
Bug Fixes
- Float size in remote read/write messages was updated to 32-bit instead of 64-bit.
- Fixed UART-Port mapping in some module drivers.
- Fixed BOS micro- and millisecond timers.
- Fixed H07R3 “play sine” and “play wave” messages.
- Fixed H08R6 module messages and remote streams (stream to port).
- Fixed H0BR4 module messages and remote streams (stream to port).
- Fixed a bug in H1BR6. Module crashes and freezes when pulling uSD card during operation. Now the module reboots and blinks its LED waiting for the card.
- Improvements and bug fixes to parameter handling in multiple CLI commands.
Known Issues
- BOS Explore functionality is disabled in this release. Calling Explore API or Command does not yield a result. The functionality will be restored in future releases.
Backward Compatibility
- This release is not backward compatible. All modules in the array must be updated to V0.2.0 in order to communicate with each other.