Changelog

v2.2.0 - 2025-08-28

General

Release Notes:

Removed
  • Removed the TINY_USB_CFG flags TINY_USB_SINGLE_FS_BAREMETAL, TINY_USB_SINGLE_HS_BAREMETAL and TINY_USB_SINGLE_FS_RTOS. These config are now configured in the middleware/tinyusb CMake files based on the current config and hardware.

Applications

Release Notes:

Added
  • Implemented sac_error_handler function in both audio applications to print error codes.

  • Added facade_set_button_event_callback to hello_world_rtos facade to set a button event callback to trigger button state update.

  • Added error assertion to all statistic function calls.

  • Implement swc_error_handler for all apps.

  • The profiler application now passes a counter reference to the backend profiler start and stop functions.

  • The profiler application now converts the cycle count after having stopped the profiler.

  • Added support for dual radio in the profiler DUT application. This allows measuring processing time of a dual radio device.

  • Added a common swc_cfg.h file in all apps to configure the network settings such as schedule, timeslot allocation and rf channels.

  • Added a common pairing_cfg.h file in all apps to configure pairing settings for both device.

  • Added a common sac_cfg.h file in both audio apps to configure audio settings.

  • Added certification mode to all SDK examples.

Changed
  • Use ASSERT_SAC_STATUS() macro to check for sac status instead of status_handler_sac() in audio applications.

  • Improve the hello_world_rtos design to be event based instead of polling based.

  • Use ASSERT_SWC_STATUS after all possibly problematic swc_* function calls instead of while (1) for all apps.

  • Changed the audio unidirectional application schedule to enable guaranteed delivery on the node’s data connection. The coordinator’s data connection is now sent as a second priority to the audio connection.

  • Updated the quasar’s radio2_enabled flag initialization to be part of the quasar_cfg initialization.

  • Move all application configuration files into a config folder in each app.

  • Merged both wireless core .._QUEUE_SIZE definition into one SWC_QUEUE_SIZE.

  • Merged timeslot allocation definition of each device into COORD_TIMESLOTS and NODE_TIMESLOTS definitions.

  • Made the statistics print logic identical across all baremetal applications.

  • Updated power settings for all example applications.

Removed
  • Remove status_handler_sac() private function from audio applications.

  • Removed app_pairing_cfg.uwb_regulation initialization from all apps since the filed was removed.

Documentation

Release Notes:

Added
  • Added a section on certification mode for all example applications to explain the certification mode procedure.

  • Added UWB Certification section to the wireless core module documentation.

  • Added Certification of SPARK UWB devices Application Note document.

Changed
  • Changed the cores documentation structure to split subject into different files.

Wireless Core

Release Notes:

Added
  • Added swc_error_t * parameter to swc_connection_update_stats and swc_connection_format_stats.

  • Added status assert macro ASSERT_SWC_STATUS() that will invoke swc_error_handler() or swc_warning_handler() functions accordingly.

  • Added weak definitions for swc_error_handler and swc_warning_handler functions to be invoked in case the user does not wish to implement them.

  • Added PAIRING_DEFAULT_CHANNEL_FREQUENCY definition to pairing api set to band 195 (7.9872 GHz, IEEE UWB channel 9).

  • Add default values all settings of the SWC API for SR1100 in the doxygen comments.

  • Add default values all settings of the SWC API for SR1100 in the doxygen comments.

Changed
  • The swc_error_t enum now has decrementing negative values for errors.

  • Moved pairing_api.h to core/wireless/pairing.

  • The pairing api now uses the PAIRING_DEFAULT_CHANNEL_FREQUENCY definition to set the channel frequency. It is set to 7.9872 GHz (IEEE UWB channel 9).

  • Normalize the default value comments for all settings for SR1100.

  • Normalize the default value comments for all settings for SR1000.

Fixed
  • Fixed RDO enabled twice in swc_api.c for SR1000.

  • Fixed an issue when an auto-reply connection receives a broadcast frame.

  • Fixed an issue when using an auto-reply connection on multiple timeslots with certification mode.

Removed
  • Removed swc_uwb_regulation_t.

  • Removed uwb_regulation from pairing_cfg_t.

  • Removed PAIRING_ERR_REGULATION_OPTION_NOT_SUPPORTED error.

Audio Core

Release Notes:

Added
  • Added status assert macro ASSERT_SAC_STATUS() that will call sac_error_handler() or sac_warning_handler() functions accordingly.

  • Added weak definitions for sac_error_handler and sac_warning_handler functions to be called in case the user does not implement them.

  • Added Normal queue size and Average queue size statistics to the formatted string of the sac_cdc processing stage.

  • Added sac_status_t * parameter to sac_pipeline_update_stats, sac_pipeline_format_stats, sac_cdc_format_stats and sac_cdc_pll_format_stats.

  • Added SAC_SCALE_16BITS_24BITS mode to sac_packing processing stage to enable scaling of packed audio samples from 16-bit to 24-bit.

  • Added a macro in sac_utils.h file to calculate the audio payload size based on the number of samples and audio settings (bit depth and number of channels).

  • Added a macro in sac_utils.h file to calculate the audio latency queue size based on the number of samples, the sample rate and the peripheral latency.

Changed
  • Increased the sac_cdc decimal factor to 1000 for more precision.

  • Reduced the gain for the following coefficients fir_n24_c0_35_w_hamming_32bit, fir_n24_c0_35_w_hamming_32bit, fir_n24_c0_20_w_hamming_x3_gain_32bit to avoid overflow at certain frequencies.

Removed
  • Removed new line from the output buffer in sac_dcd_format_stats and sac_cdc_pll_format_stats.

  • Removed sac_hal_t.

  • Removed sac_facade_hal_init() function.

  • Removed sac_hal_t parameter from sac_init() function.

Quasar BSP

Release Notes:

Added
  • Added quasar_audio_set_i2s_mux_selection function to connect the SAI to either the on board codec with QUASAR_SELECT_ON_BOARD_CODEC or an external audio interface with QUASAR_SELECT_EXT_CODEC.

  • Added quasar_sai_mode_t parameter to quasar_sai_config_t to select one of 3 SAI modes supported.

  • Added quasar_sai_frequency_t parameter to quasar_sai_config_t to select the desired audio sampling frequency.

  • Added quasar_sai_protocol_t parameter to quasar_sai_config_t to select one of 3 SAI protocols supported.

  • Blocking UART calls can now be given a timeout value in milliseconds.

Changed
  • The BSP for the profiler only initializes and returns the current cycle count.

  • Renamed quasar_audio_init to quasar_audio_init_sai function to initialize the Serial Audio Interface (SAI) peripheral. It can now be configured for different use-cases instead of only supporting 1 mode.

  • Renamed quasar_audio_deinit to quasar_audio_deinit_sai function to de-initialize the Serial Audio Interface (SAI) peripheral.

  • Changed the SPI idleness to 0 cycle when using the SR1120 to improve processing time.

  • Use error enum to handle HAL errors.

  • Add static keyword to quasar_profiler_get_cycle_count function.

Fixed
  • Fix I2S channel inversion when the I2S master resets. The SAI is now reset when an error is detected.

  • Fix write flash memory verification sequence to use the HAL.

Removed
  • Removed irq_callback typedef.

EVK1.4 BSP

Release Notes:

Added
  • Added evk_set_but0_irq_callback and evk_set_but1_irq_callback functions to handle button IRQ callback.

  • Blocking UART calls can now be given a timeout value in milliseconds.

Changed
  • The BSP for the profiler only initializes and returns the current cycle count.

  • Use error enum to handle HAL errors.

  • Add static keyword to evk_profiler_get_cycle_count function.

Removed
  • Removed irq_callback definition. Replaced by explicit function pointer cast.

Libraries

Release Notes:

Changed
  • Changed the critical section library file structure to allow custom implementations for different hardware.

Removed
  • Removed queue_critical_cfg_t.

  • Removed queue_critical_cfg_t parameter from queue_init() function.

Modules

Release Notes:

Changed
  • Renamed the tinyusb_module module to tinyusb_freertos.

  • Renamed the tinyusb_module_baremetal module to tinyusb_baremetal.

  • Use error enum to handle flash errors from the BSP in the file system module.

Middleware

Release Notes:

Changed
  • Updated the tinyusb middleware from v0.15.0 to v0.18.0.

  • Changed the tiny_usb files and folders to tinyusb to match the library’s name.

Third-Party

Release Notes:

Changed

v2.1.1 - 2025-06-16

Wireless Core

Release Notes:

Added
  • Added support for 40.96 MHz PHY rate when using the wireless fallback mode.

  • Added error checking in swc_connection_set_concurrency_cfg to validate CCA try_count and retry_time fields.

  • Added error checking in swc_connection_set_fallback_cfg to validate CCA try_count fields.

  • Added error check in RX specific api functions against passing a TX connection instance in argument.

  • Added error check in TX specific api functions against passing a RX connection instance in argument.

Changed
  • Optimized SR1100 receiver integrator gain selection to accelerate radio frame preparation.

Fixed
  • Fixed the node’s ISI_MITIG configuration not being applied when dynamic PHY rate is disabled.

  • Fixed DDCM behaviour when TX usage is lower than 50%.

  • Fixed TDMA with bidirectional links on SR1100

  • Fixed CCA retry count for SR1100. The retry count now properly corresponds to the number of energy readings to do.

  • Fixed dangling pointer to the configuration buffer of the channel_sequence in swc_init. Memory is now allocated using the wireless core memory pool.

  • Fixed dangling pointer to the connection name in swc_connection_init. Memory is now allocated using the wireless core memory pool.

  • Fixed dangling pointer to the configuration buffer of the timeslot id in swc_connection_init. Memory is now allocated using the wireless core memory pool.

  • Fixed a bug in certification mode causing corruption when configuring an auto-reply connection’s channel.

v2.1.0 - 2025-04-28

Applications

Release Notes:

Added
  • Improved the pairing process.

    • Modified the pairing process to start at boot for all applications.

    • Standardize the pairing process across all SDK applications.

    • Update the SDK apps documentation to include details about the automatic pairing process.

  • Added a profiler tool designed to measure and log the processing time of the SWC.

  • Added support for short and long presses on EVK1.4.

    • Added short press support in audio applications to control volume level.

  • Added PendSV_IRQn priorities for all apps to match EVK1.4.

  • Added support for dual radio on all SDK example node devices.

  • Added facade_read_button_state to audio applications facade.

  • Added new facade user_button prototypes to star_network application.

    • Added facade_node_read_user_button_state to star_network application facade.

    • Added facade_coord_read_user_button_1_state to star_network application facade.

    • Added facade_coord_read_user_button_2_state to star_network application facade.

  • Added new facade user data payload status prototypes to star_network application.

    • Added facade_node1_payload_coord_received_status to star_network application facade.

    • Added facade_node1_empty_payload_coord_received_status to star_network application facade.

    • Added facade_node2_payload_coord_received_status to star_network application facade.

    • Added facade_node2_empty_payload_coord_received_status to star_network application facade.

    • Added facade_coord_payload_node_received_status to star_network application facade.

    • Added facade_coord_empty_payload_node_received_status to star_network application facade.

  • Enable button state transfer from the Coordinator to the Node in the Star Network application, leveraging normal presses now that the long-press pairing mechanism is in place.

  • Added LED connection status to connection_priority application.

  • Added sequence number statistics to datalink application.

  • Added statistics to star_network application.

  • Added facade_audio_process_main_channel_timer_trigger to trigger the main channel audio process execution.

  • Added facade_audio_process_back_channel_timer_trigger to trigger the back channel audio process execution.

  • Added facade_audio_process_timer_trigger to trigger the audio process execution.

  • Added if statement in audio_process_main_channel_callback of audio_bidirectional_coord.c to only run sac_pipeline_process and sac_pipeline_consume when they are required.

  • Added if statement in audio_process_back_channel_callback of audio_bidirectional_node.c to only run sac_pipeline_process and sac_pipeline_consume when they are required.

  • Added if statement in audio_process_callback of audio_unidirectional_coord.c to only run sac_pipeline_process and sac_pipeline_consume when they are required.

Changed
  • PendSV priority is set to 12 for all applications and is no longer a front-facing configuration.

  • Changes button state transmission to be real-time instead of toggling on press in audio examples.

  • Standardizes button state transmission across audio and Star Network examples.

  • Changed the pairing/unpairing feature to be triggered by a long press on the EVK1.4, allowing normal presses to be repurposed.

  • Refactored facade_button_handling to group button variables in a structure and reduce code repetition.

  • Updated datalink application statistics print to be based on time and not packet rate.

  • Updated fragmentation application statistics print to be based on time and not packet rate.

  • Changed connection_priority connection priority node transmission split to be 80/20 instead of 79/21.

  • Initialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.

  • Updated SR1100 datalink application config to match 2.0Mbps profile of EVK Demo.

  • Updated Connection Priority power settings:

    • SR1120

      • Increased band count from 4 to 5 to improve frequency coverage by all devices.

      • Reduced band spacing from 10 to 8 to be able to fit 5 bands.

      • Increased pulse gain from 0 to 1 to counter the increase in average power.

    • SR1020

      • Increased band count from 4 to 5 to improve frequency coverage by all devices.

  • Updated Hello-World power settings:

    • SR1120

      • Increased band count from 4 to 5 to improve frequency coverage by all devices.

      • Reduced band spacing from 10 to 8 to be able to fit 5 bands.

      • Increased pulse gain from 0 to 1 to counter the increase in average power.

    • SR1020

      • Increased band count from 4 to 5 to improve frequency coverage by all devices.

  • Updated Hello-World RTOS power settings:

    • SR1120

      • Increased band count from 4 to 5 to improve frequency coverage by all devices.

      • Reduced band spacing from 10 to 8 to be able to fit 5 bands.

      • Increased pulse gain from 0 to 2 to counter the increase in average power.

    • SR1020

      • Increased band count from 4 to 5 to improve frequency coverage by all devices.

  • Updated Star Network power settings:

    • SR1120

      • Increased band count from 4 to 5 to improve frequency coverage by all devices.

      • Reduced band spacing from 10 to 8 to be able to fit 5 bands.

    • SR1020

      • Increased band count from 4 to 5 to improve frequency coverage by all devices.

  • Optimized Audio Bidirectional application CCA settings for 2 concurrent links in uncompressed state and 4 concurrent links in compressed state.

  • Optimized Audio Unidirectional application CCA settings for 2 concurrent links.

  • Optimized Datalink application CCA settings for 3 concurrent links.

  • Use swc_connection_get_payload_buffer instead of swc_connection_allocate_payload_buffer in all SDK example applications.

  • Refactored the way stats are printed and reset in both Hello-World apps.

  • Changed EVK1.4 statistics reset button to a short press on SW1 for the following apps:

    • Connection Priority

    • Fragmentation

    • Hello World

    • Hello World RTOS

  • Changed the way audio processes are triggered. The audio producer will now trigger the audio process timer instead of relying on a periodic polling process.

  • Changed the facade_audio_process_main_channel_timer_init function to receive the timer callback function and initialize the timer to a 1 second period instead of a custom microsecond period.

  • Changed the facade_audio_process_back_channel_timer_init function to receive the timer callback function and initialize the timer to a 1 second period instead of a custom microsecond period.

  • Changed the facade_audio_process_timer_init function to receive the timer callback function and initialize the timer to a 1 second period instead of a custom microsecond period.

  • Changed the audio application initialization order. The wireless core is now initialized and connected before the audio core starts.

Fixed
  • Fixed the function headers facade_context_switch_trigger and facade_set_context_switch_handler to align with the reworked SWC API.

  • Fixed Hello-World baremetal message counter. The value is now using 32-bit integer.

  • Fixed Connection Priority application statistics print rate being higher than the coordinator.

  • Fixed Connection Priority application hardfault on EVK1.4 hardware.

  • Fixed Star Network bug that was causing Coordinator to crash over time. More specifically, the priority of PendSV_IRQn was too high. Since the prints were being called in the _rx_success_callback functions triggered by the PendSV IRQ, the writing was given priority over the USB and USB timer IRQs which are used to read and empty the buffer. This meant that over time, the buffer would overflow. Furthermore, the printed strings on the Coordinator were too long and causing tinyUSB to work over its USB Full-Speed (FS) limit of 64 bytes/ms. Therefore, the PendSV IRQ priority was dropped under that of the USB and USB timer, and the printed string was reduced.

Removed
  • Removed the facade_audio_process_main_channel_set_timer_callback function. The timer callback function is now set using facade_audio_process_main_channel_timer_init.

  • Removed the facade_audio_process_back_channel_set_timer_callback function. The timer callback function is now set using facade_audio_process_back_channel_timer_init.

  • Removed the facade_audio_process_set_timer_callback function. The timer callback function is now set using facade_audio_process_timer_init.

Documentation

Release Notes:

Added
  • Renamed Syncword to SFD.

  • Added an article in the porting guide for the profiler.

  • Added a note about the pairing abort feature in the pairing section of application documentation.

  • Added links to previous SDK version documentation in the documentation main page.

  • Added documentation on how to enable dual radio in SDK example apps.

  • Added IRQ Priority Scheme sections to EVK1.4 and Quasar documentation.

  • Added STM32 USB DFU permission setup for Linux in Getting Started.

  • Added warning for the SDK’s project path on Linux.

  • Added documentation on how to calculate the audio clock drift queue averaging period.

  • Added documentation on the low-pass filter effect of the linear interpolation resampling process.

  • Added documentation on the synchronization of audio processes in the audio applications.

  • Added SDK v2.1.0 changelog.

Changed
  • Adjusted all frame diagrams in Core - Wireless Core - Concepts documentation to include the 4-bit IOOK header.

  • Adjusted the SR1120 Sync frame diagram in Core - Wireless Core - Concepts to show a 31-bit CRC instead of a 16-bit CRC.

  • Improved the pairing process.

    • Modified the pairing process to start at boot for all applications.

    • Standardize the pairing process across all SDK applications.

    • Update the SDK apps documentation to include details about the automatic pairing process.

  • Updated the Features page with the latest SDK features.

  • Updated MCU Requirements section.

  • Updated Porting Optimizations section.

  • Updated EVK app button action description.

  • Improved Windows long path documentation.

Wireless Core

Release Notes:

Added
  • Added “swc_set_phy_mode” function for users to change PHY mode (PHY rate and isi mitigation) on SR1120

  • Added block average link margin indicator to SWC stats.

  • Added error check on input frequency when adding channel using swc_connection_add_channel

  • Added new API call swc_node_enable_legacy_sfd to support backward compatibility with SDK2.0 SFDs.

  • Added swc_get_multi_radio_select_mode function to poll for current multi-radio selection mode.

  • Added error parameter to swc_set_multi_radio_select_mode.

  • Added new error code SWC_ERR_INVALID_OPERATION_AFTER_SWC_LOCK to prohibit user from initializing connection parameters after any of the priority feature has been enabled.

  • Added new error code SWC_ERR_INVALID_OPERATION_CONN_PRIO_ENABLED to prohibit user from initializing the slots priority feature after the connection priority has been enabled.

  • Added new error code SWC_ERR_INVALID_OPERATION_SLOT_PRIO_ENABLED to prohibit user from initializing the connection priority feature after the slots priority has been enabled.

  • Added swc_connection_flush_queue api that enables flushing packets in the wireless core queue after a swc_disconnect call.

  • Added a SWC_ERR_FLUSH_QUEUE_WHILE_RUNNING error.

  • Added NULL pointer check in swc_connection_get_enqueued_count.

Changed
  • Renamed Syncword to SFD.

  • Used SLPNOISY flag to go to sleep automatically after the last CCA try in abort mode.

  • Disabled sync frames (conn.first_tx_after_connect=false) when certification mode is enabled.

  • Initialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.

  • Renamed the SWC_ERR_INCORRECT_TS_SLEEP_LEVEL error code returned by swc_set_time_slots_sleep_level() to SWC_ERR_INVALID_TIMESLOT_SLEEP_LEVEL for consistency.

  • Changed RDO protocol header size from 16 to 8 bits.

  • PAN ID is now 15 bits to have access to the full list of 128 new orthogonal SFD.

  • The PHY can now support 128 different networks and the MAC now supports 32768 different networks.

  • Renamed swc_radio_select to swc_set_multi_radio_select_mode.

  • Changed WPS_ENABLE_PHY_STATS_PER_BANDS default state to OFF.

  • The following API calls will now return an error if they are called after any priority feature (swc_connection_set_connection_slots_priority or swc_connection_set_connection_priority) is enabled:

    • swc_connection_set_fragmentation

    • swc_connection_set_acknowledgement

    • swc_connection_set_credit_flow_ctrl

    • swc_connection_set_fec_ratio

    • swc_connection_set_modulation

  • swc_node_set_sleep_level() will now return the error swc_node_set_sleep_level if any of the provided timeslot duration are greater than the maximum possible duration for that sleep level.

  • Explained the difference between swc_connection_allocate_payload_buffer and swc_connection_get_payload_buffer in their function headers.

  • The wireless core now sets all connections status to disconnected when calling swc_disconnect.

Fixed
  • Fixed the SR1120 register file.

  • Fixed SR1120 sleep level per time slot uncertain timings.

  • Fixed an issue with certification mode in a star network.

  • Fixed preamble reg value convertion from bits.

  • Concurrency low power mode will now only generate one IRQ, allowing MCU with slow processing to handle CCA correctly.

  • Remove 1.65 ms delay before the RX is turned on in fast sync.

  • Fixed the maximum connection priority allowed to match the maximum number of connection per timeslot.

  • Fixed the fragmentation connection queue size check in wps_frag.c by correctly calculating the number of fragment count when the header overhead adds extra fragments.

  • Enhanced stability and reliability of the SR1120 RF performances.

  • Fixed a hardfault condition when using Link Time Optimization (LTO) flag.

Removed
  • Removed statistics related to RNSI and RSSI in the printed statistics.

  • Removed the initialization of the free running timer.

  • Removed SWC_EXT_ERR_RDO_INC_STEP_INVALID error.

  • Removed increment step config from swc_ext_enable_rdo.

Audio Core

Release Notes:

Added
  • Added sac_cdc_calculate_queue_average_size api to calculate the CDC queue_average_size based on a required drift value to compensate.

  • Added sac_get_ms_in_x_packets utility function to convert a number of packets into a value in milliseconds.

  • Added a ep_swc_consumer_start action to fill the wireless core queue after audio buffering is complete.

Changed
  • Initialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.

Removed
  • Removed unused sac_pipeline_consume_all() function prototype from sac_api.h.

Quasar BSP

Release Notes:

Added
  • Added the initialization of the free running timer to the BSP initialization.

  • Added profiler functions for measuring execution time.

  • Added quasar_usb_init_usb_detect_gpio function to USB module.

  • Added quasar_usb_deinit_usb_detect_gpio function to USB module.

  • Added quasar_timer_generate_event function to timer module.

Changed
  • Reworked the PendSV function by making it private and no longer configurable at the application level. IRQ Priority set to 12.

  • Initialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.

  • Moved the Quasar BSP contents outside of the src folder.

  • Adapted CMakeList in bsp/quasar for Quasar BSP’s new location.

  • Simplified the quasar_usb_deinit function and removed ST PCD module init.

  • Improved the quasar_usb_deinit to allow runtime peripheral power down to save power when not required.

Fixed
  • Fix timer prescaler update.

  • Fix ADC battery level monitoring.

Removed
  • Removed pendsv_prio from quasar_cfg structure in quasar.h.

EVK1.4 BSP

Release Notes:

Added
  • Added the initialization of the free running timer to the BSP initialization.

  • Added profiler functions for measuring execution time.

  • Added evk_timer_generate_event function to timer module.

Changed
  • Reworked the PendSV function by making it private and no longer configurable at the application level. IRQ Priority set to 12.

  • Initialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.

  • Moved the EVK1.4 BSP contents outside of the src folder.

  • Adapted CMakeList in bsp/evk1_4 for EVK1.4 BSP’s new location.

Removed
  • Removed pendsv_prio from evk_cfg structure in evk.h.

  • Removed unused IRQ priority definitions: APP_TIMER_HIGH, SYSTICK, UART4, LPUART, APP_TIMER and BASIC_MS_TIMER.

  • Removed HAL_UART_MspInit and HAL_UART_MspDeInit legacy functions.

Drivers

Release Notes:

Changed
  • Initialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.

Libraries

Release Notes:

Changed
  • Initialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.

Modules

Release Notes:

Changed
  • Initialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.

Middleware

Release Notes:

Changed
  • Initialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.

Virtual Environment

Release Notes:

Added
  • Added installation of STM32 USB DFU driver during environment setup on Windows PCs.

VS Code

Release Notes:

Added
  • Added VS Code task to flash a compiled binary into a STM32 devices in USB DFU bootloader mode.

Changed
  • Adjusted VS Code cpptools extension settings for Intellisense to improve parsing performances.

    • Set C_Cpp.default.configurationProvider to ms-vscode.cmake-tools.

    • Cleared C_Cpp.default.browse.path.

    • Added file exclusions (C_Cpp.files.exclude) for the .vscode folder and some unused micromamba dependencies.

Toolchain

Release Notes:

Fixed
  • Modify gcc-arm-compiler.cmake to use arm-none-eabi-gcc for assembly code.

  • Modify gcc-x86-compiler.cmake to use gcc for assembly code.

v2.0.0 - 2024-10-01

General

Release notes:

This major version brings several changes to the project’s structure and its APIs. Changelogs for older releases can be found here.

  • Support for the new SR1120 transceiver.

  • Application examples have been revised. Some were removed, some were consolidated into one and new ones have been added.

  • Ranging Core was removed.

Added
  • New Audio Bidirectional with 48kHz/24-bit stereo main channel and 32kHz/16-bit mono back channel. Both audio streams have a fallback mode to ADPCM compression.

  • New Audio Unidirectional application at 48kHz/24 bits with a fallback at 16 bits.

  • New Hello World RTOS application.

  • New Datalink application.

  • Concurrency support for all applications.

  • Pairing support for all applications.

Changed
  • Transitioned from the now legacy interface module to a new facade/backend approach. The facade now defines the application requirements, while the backend handles hardware-specific implementations.

  • micromamba was updated to v1.5.9.

  • CMake Presets now replace the original VSCode CMake Variants.

  • The development environment bootstrap can now be executed through VSCode Tasks and activated via the corker.vscode-micromamba extension.

  • Use tinyUSB as USB driver instead of vendor-specific drivers.

  • Improved visual appearance of Star Network Coord terminal ouput.

  • Renamed bsp/evk folder to bsp/evk1_4.

  • Print Hello World stats using time elapsed instead of TX count.

Fixed
  • Windows bootstrap now checks for missing DLLs required by micromamba, and installs them when needed.

  • Increase Hello World MAX_PAYLOAD_SIZE from 20 to 30.

  • Adjust Hello World connections max_payload_size from MAX_PAYLOAD_SIZE to MAX_PAYLOAD_SIZE + ENDING_NULL_CHARACTER_SIZE.

Removed
  • Audio Streaming application.

  • Audio Compression application.

  • Audio User Data application.

  • Audio High Resolution application.

  • Audio 4-Channel application.

  • Audio Mixer application.

  • Pairing Basic application.

  • Pairing Gaming Hub application.

  • Ranging application.

  • Shutdown pin test from BSP Validator.

Documentation

Release notes:

The documentation has been updated to reflect the new project structure, applications, hardware, and transceiver support.

Added
Changed
Removed

Wireless Core

Release notes:

API overhaul and support for the new SR1120 transceiver.

Added
  • New SWC_ERR_NULL_TIMESLOT_DURATION error code to handle invalid timeslot durations of 0.

  • New SWC_ERR_INVALID_OPERATION_AFTER_SETUP error code to handle invalid instructions that can only be done after swc_setup().

  • New SWC_ERR_CCA_INVALID_PARAMETERS error code to handle incorrect CCA settings.

  • New SWC_ERR_NO_CHANNEL_INIT error code to catch connection with no channel assigned.

  • New statistics metric packet_retry_count.

  • New API call swc_node_get_radio_product_model to get the first radio’s product model.

  • New API call swc_node_get_radio2_product_model() to get the second radio’s product model.

  • New API call swc_node_get_radio_product_version() to get the first radio’s product version.

  • New API call swc_node_get_radio2_product_version() to get the second radio’s product version.

  • New API call swc_set_time_slots_sleep_level() to specify a sleep level per timeslot (SR1120-only).

  • New fallback_settings.tx_pulse_count in the swc_channel_cfg_t structure.

  • New fallback_settings.tx_pulse_width in the swc_channel_cfg_t structure.

  • New fallback_settings.tx_pulse_gain in the swc_channel_cfg_t structure.

  • New Credit-Based Flow Control mechanism. Enable it via the swc_connection_set_credit_flow_ctrl() API call.

  • New packet_ack_data_received_count statistic in swc_statistics_t that counts the reception of auto-reply frames with data.

  • New packet_ack_data_send_count statistic in swc_statistics_t that counts the transmission of auto-reply frames with data.

  • New Datarate statistic in kbps included in the output string of swc_connection_format_stats() API call.

  • The structure swc_fallback_info_t now includes a cca_event_count member.

Changed
  • swc_connection_init() now returns an error when an invalid address is provided (SWC_ERR_CONNECTION_ADDRESS).

  • swc_radio_module_init() now returns an error when transceiver power up fails (SWC_ERR_RADIO_NOT_FOUND).

  • The Wireless Core will now send one “sync frame” after receiving a connect event to sync the receiver’s stop-and-wait sequence.

  • Fallback power settings are now set per band in the swc_channel_cfg_t structure. They are now absolute values instead of relative to the channel’s power settings.

  • Public headers have been moved to the Wireless Core root directory.

Fixed
  • Setting PAN ID LSB to 0xFF is now prevented and doing so will return a SWC_ERR_PAN_ID error code.

  • Certification mode now properly emulates ACK frames.

  • Correctly handle cases where a transceiver IRQ happens after a disconnect request.

  • Shallow and Deep sleep IRQ handling.

  • Link margin overflow in the swc_connection_get_fallback_info() API call.

  • Not being able to drop frame when TTL-retry is set to 0.

  • Node device not able to ACK when using fast sync.

  • Certification mode in multi-radio systems.

  • Stop-and-wait sequence is not properly initialized on boot.

  • Stop-and-wait duplicate statistics being incremented twice instead of once.

  • Connection status with connection priority.

  • Certification mode with connection priority.

  • Transceiver power up delay.

  • RNSI and RSSI were not read properly while receiving auto-replies.

Removed
  • fallback_settings.tx_pulse_count_offset from swc_connection_cfg_t.

  • fallback_settings.tx_pulse_width_offset from swc_connection_cfg_t.

  • fallback_settings.tx_pulse_gain_offset from swc_connection_cfg_t.

  • packet_retry_count from swc_statistics_t.

Deprecated
  • In swc_radio_cfg_t, spi_mode member is now ignored (unused) for the SR1020 transceiver; SPI mode is now forced to SPI_FAST internally.

Audio Core

Release notes:

  • Some of the Audio Core’s function names were generalized to allow generic CODEC usage.

  • The fallback module was converted to be used as a processing stage.

Added
  • Sampling Rate Conversion (SRC) is now compatible with multi-channel audio streams.

  • SRC support for 24-bit and 32-bit depths.

  • New sac_cdc_pll processing stage for Clock Drift Compensation (CDC) by PLL tuning.

  • New statistics structure for CDC resampling (sac_cdc_resampling_stats_t).

  • New API call sac_cdc_format_stats() to format the CDC statistics as a string.

  • New API call sac_add_producer() to add a producer to another producer’s list.

  • New API call sac_node_memcpy() performs a safe data copy to a node.

  • New API call sac_set_extra_queue_size() to set the endpoint’s internal extra queue size.

  • New API call sac_endpoint_link() to link the queue of a consumer endpoint with a producer endpoint.

  • New interface for the CDC process.

  • New SAC_CHECK_STATUS macro in the sac_utils.h file.

  • New error code SAC_ERR_NOT_INIT indicating that the SPARK Audio Core has not been initialized.

  • New error code SAC_ERR_FALLBACK_PROC_NOT_FOUND indicating that a fallback process was not found in the processing stage list.

  • New error code SAC_WARN_PROCESSING_Q_EMPTY indicating that there aren’t any nodes available for processing.

  • New error code SAC_ERR_NODE_DATA_SIZE_TOO_SMALL indicating that a node is too small for the data that needs to be copied into it.

  • The structure sac_fallback_instance_t now includes a connection member.

  • The structure sac_pipeline_t now includes a _internal.processing_queue member. This queue is used to allocate output nodes for processing.

  • The structure sac_fallback_instance_t now includes a tick_frequency_hz member.

  • The structure sac_fallback_instance_t now includes a get_tick function pointer.

  • The structure sac_endpoint_t now includes a _internal.extra_queue_size member.

  • Defined default constants for CDC_DEFAULT_RESAMPLING_LENGTH (1440) and CDC_DEFAULT_QUEUE_AVERAGE (1000) while allowing user to set using target_compile_definitions.

Changed
  • Fallback API calls now take input parameter sac_fallback_module_instance_t and output parameter sac_status_t.

  • API call sac_processing_stage_init() now takes a string as parameters (const char *name).

  • API call move_audio_packet_to_consumer_queue() now returns an error when no consumer node is available.

  • Moved consumer_link_margin_min_peak statistic from the sac_pipeline_t structure to the sac_fallback_link_margin_metrics_t structure.

  • Moved consumer_cca_fail_count_peak statistic from the sac_pipeline_t structure to the sac_fallback_cca_metrics_t structure.

  • Reduced SAC_MIN_PRODUCER_QUEUE_SIZE value from 3 to 1. The initialization will automatically increment the free queue size by one to allocate a node for the production event. The minimum free queue size is now 2.

  • sac_pipeline_process() now treats the input node as read-only. For each processing stage, an output node is allocated and the input node is freed after. If the node is shared (copy count > 0) the node will not be returned to the free queue yet. Another node will be allocated for the next stage.

  • Moved queue memory allocation from sac_endpoint_init() to sac_pipeline_setup().

  • sac_pipeline_setup() queue initialization sequence now initializes all endpoint of the list if it has not been done already.

  • sac_pipeline_produce() now enqueues the produced node on all producers in the list.

  • Renamed sac_mixer_endpoint to sac_dummy_endpoint to make it reusable for other use cases.

  • Refactored node names such as input_node, output_node or processing_node for improved clarity.

  • Producer’s queue data size now matches its configuration. Only the processing queue data size will use the maximum data size between both endpoints.

  • Mixing input pipeline consumer queue size does not increase the queue size anymore since the output pipeline has its own processing queue. It will not use the input pipeline consumer nodes for processing.

  • Public headers have been moved to the Audio Core root directory.

  • Renamed sac_error_t to sac_status_t.

  • Renamed SAC_ERR_NONE to SAC_OK.

  • Renamed SAC_ERR_PRODUCER_Q_FULL to SAC_WARN_PRODUCER_Q_FULL.

  • Renamed SAC_ERR_CONSUMER_Q_EMPTY to SAC_WARN_CONSUMER_Q_EMPTY.

  • Renamed SAC_ERR_BUFFERING_NOT_COMPLETE to SAC_WARN_BUFFERING_NOT_COMPLETE.

  • Renamed SAC_ERR_NO_SAMPLES_TO_PROCESS to SAC_WARN_NO_SAMPLES_TO_PROCESS.

  • Renamed SAC_ERR_PROCESSING_Q_EMPTY to SAC_WARN_PROCESSING_Q_EMPTY.

Fixed
  • Unhandled overflow condition when delayed consumer is not running.

  • Hardfault when consumer data size is smaller than producer data size but there aren’t any processes to reduce data size in between.

  • Audio producer overflow handling to make sure old nodes are flushed first.

  • Delayed producer overflow causing audio production to stop.

Removed
  • Clock Steering processing stage.

  • cdc_inflated_packets_count member from the sac_statistics_t structure.

  • cdc_deflated_packets_count member from the sac_statistics_t structure.

  • link_margin_conn_packets_per_second member from the sac_fallback_instance_t structure.

  • main_conn_packets_per_second member from the sac_fallback_instance_t structure.

  • cdc_enable member from the sac_pipeline_t structure.

  • API call sac_pipeline_get_cdc_inflated_packets_count().

  • API call sac_pipeline_get_cdc_deflated_packets_count().

  • API call sac_pipeline_get_consumer_link_margin_min_peak().

  • API call sac_pipeline_get_consumer_cca_peak().

  • sac_fallback_module_cfg_t structure. The fallback module is now configured with the instance’s public fields.

  • API call sac_fallback_update_state(). Replaced by processing stage function sac_fallback_process().

  • API call sac_fallback_update_stats(). Now handled by processing stage function sac_fallback_process().

  • API call sac_fallback_gate_fallback_on_detect() . The processing stage function sac_fallback_process() handles the audio header fallback field detection and sets the proper fallback state. The user can use API call sac_fallback_gate_is_fallback_on() instead.

  • API call sac_fallback_gate_fallback_off_detect(). The processing stage function sac_fallback_process() handles the audio header fallback field detection and sets the proper fallback state. The user can use API call sac_fallback_gate_is_fallback_off() instead.

Quasar BSP

Initial release.

EVK1.4 BSP

Added
  • New API call evk_audio_sai_deinit() to deinitialize the SAI.

Changed
  • Move HAL_IncTick call to TIM2 IRQ handler.

Drivers

No changes.

Libraries

Added
  • [queue] New data_size member added to the queue_node_t structure.

Changed
  • [queue] copy_count member of the queue_node_t structure is now incremented when a node is enqueued on a normal queue. It will be decremented every time the node is dequeued.

  • [queue] copy_count member of the queue_node_t structure is now initialized with a value to 0.

Removed
  • [queue] queue_inc_copy_count() private function.

Archive