Radio Control Layer (RCL) Release Notes
Table of Contents
Introduction
The Radio Control Layer (RCL) component for the LPF3 SDK consists of:
- High-level Radio Control Layer driver providing scheduling and power management
- Low-level RF protocol implementation
- Radio core firmware images
- API documentation
Disaclaimer
This version has changes in the command status codes and the type of the RCL_init() function from the 7.20 version. See Upgrade and Compatibility Information for details.
Documentation
The following documentation is included in RCL.
- API documentation
- Release Notes (this document)
Build Size
The following is the output of the TI ARM Clang size tool:
| Component | Flash Size (Bytes) | RAM Size (Bytes) |
|---|---|---|
| Other | 908 | 102 |
| LRF | 4188 | 37 |
| RCL | 4766 | 0 |
| BLE5 Command Handler | 11472 | 0 |
| Generic PHY Command Handler | 6218 | 0 |
| ADC Noise Command Handler | 1212 | 0 |
| Totals | 28764 (5.49%) | 139 (0.38%) |
Note this is the total size of the archive, not necessarily the size of the final linked program.
Dependencies
- coresdk_lpf3: 7.40.00.14
- TI ARM LLVM: 3.2.0.LTS-0
- GCC: 9.2019.q4.major-0
- IAR: (‘9.40.2-0’,)
- Radioconfig: 7.40.00.07
Hardware Setup
This release is tested with the following hardware:
- LP_EM_CC2340R5
No hardware modifications are required.
What’s New
This list contains all new features since: v7.40.00
| ID | Summary |
|---|---|
| RCL-469 | IEEE 802.15.4: Create link example and test for IEEE 802.15.4 (Zigbee) PHY using generic commands |
| RCL-397 | Update to more detailed command status codes for stopped commands |
Fixed Issues
This list contains all bugfixes since: v7.40.00
| ID | Summary |
|---|---|
| RCL-588 | The Loki RCL does not ensure Temperature driver is initialized before use causing inaccurate TX power temperature compensation and trim compensation |
| RCL-567 | RCL doesn't clear SYSTIM interrupt mask when no further events are planned upon entering standby |
| RCL-367 | Update packet FIFO handling to avoid losing operations |
| RCL-438 | Issue in “genfsk” PHY firmware with incorrect demodulator termination at end-of-packet (used by MSK and GFSK PHYs) |
| RCL-437 | Issue with incorrect frequency offset compensation for MSK (250kbps) and GFSK (250kbps, 500kbps) PHYs |
| RCL-209 | RCL_init should return void |
Known Issues
| ID | Summary |
|---|---|
| RCL-343 | PBE NESB - Address mismatch counter not implemented |
Upgrade and Compatibility Information
This version provides more detailed information in the status field of an RCL command that has been stopped. This means that the identifiers of the RCL_CommandStatus enum have changed. The values have also changed; named identifiers should always be used when addressing variables of type RCL_CommandStatus.
| Identifier in RCL version 7.20 | Identifier in this RCL version | Description |
|---|---|---|
RCL_CommandStatus_Descheduled |
RCL_CommandStatus_DescheduledApi |
Command was descheduled before starting running in the radio because RCL_CommandStop() was called |
RCL_CommandStatus_Descheduled |
RCL_CommandStatus_DescheduledScheduling |
Command was descheduled before starting running in the radio due to scheduling of another command |
RCL_CommandStatus_GracefulStop |
RCL_CommandStatus_GracefulStopTimeout |
Command ended because time set in timing.relGracefulStopTime was reached |
RCL_CommandStatus_GracefulStop |
RCL_CommandStatus_GracefulStopApi |
Command ended gracefully because RCL_CommandStop() was called with RCL_StopType_Graceful argument |
RCL_CommandStatus_GracefulStop |
RCL_CommandStatus_GracefulStopScheduling |
Command ended due to scheduling where interrupting command had RCL_ConflictPolicy_Polite |
RCL_CommandStatus_HardStop |
RCL_CommandStatus_HardStopTimeout |
Command ended because time set in timing.relHardStopTime was reached |
RCL_CommandStatus_HardStop |
RCL_CommandStatus_HardStopApi |
Command ended because RCL_CommandStop() was called with RCL_StopType_Hard argument |
RCL_CommandStatus_HardStop |
RCL_CommandStatus_HardStopScheduling |
Command ended due to scheduling where interrupting command had RCL_ConflictPolicy_AlwaysInterrupt |
Code that previously checked for one of the statuses for version 7.20 or earlier, should check for any of the corresponding new statuses. The macros RCL_CommandStatus_isAnyDescheduled(), RCL_CommandStatus_isAnyGracefulStop(), and RCL_CommandStatus_isAnyHardStop() may be used for that purpose; these macros will give the same behavior as in the 7.20 version.
This version has changed the RCL_init() function from returning an int to being void:
void RCL_init(void);The return value would previously always be 0, and any code that used to check the returned value should behave as if 0 was returned.
Known Limitations
The following scenarios have limited test coverage in the RCL module tests:
- Stress testing or throughput testing of connection
- Testing of adding buffers to the radio while it is running
- The testing of fields in the
statsstructures
The SW has the following limitations:
- Advertising Extensions content is alpha quality, and not integrated with TI’s BLE-Stack. There will be no support provided for integration of these alpha APIs
Versioning
This product’s version follows a version format, M.mm.pp.bb, where M is a single digit Major number, mm is 2 digit minor number, pp is a 2 digit patch number, and b is an unrestricted set of digits used as an incrementing build counter.