Changelog
v2.3.0 - 2026-02-24
General
Release Notes:
AddedAdded a new audio application example based on the PureTone Headset.
Added support for USB audio with audio examples.
Added support for QSPI with SR1100.
ChangedUpdated the SPARK virtual environment. Read the Getting Started page for more details.
Updated the fallback API to support multiple fallback modes.
RemovedRemoved the swc_node_t structure from the SWC API. Node configuration is now done with swc_init().
Applications
Release Notes:
AddedAdded audio_unidirectional_i2s_backend.c and audio_unidirectional_tinyusb_backend.c to separate backend functions for I2S and USB audio.
Added audio_bidirectional_i2s_backend.c and audio_bidirectional_tinyusb_backend.c to separate backend functions for I2S and USB audio.
Added facade_configure_coord_usb_audio facade in audio examples when USB_AUDIO_ENABLED is defined to 1 to configure the coordinator’s USB audio stream before its initialization.
Added facade_configure_node_usb_audio facade in audio examples when USB_AUDIO_ENABLED is defined to 1 to configure the node’s USB audio stream before its initialization.
Added facade_get_coord_usb_audio_tx_fifo_sample_count facade in audio_bidirectional example when USB_AUDIO_ENABLED is defined to 1 to get the number of samples in the USB audio output (EPIN) fifo on the coordinator.
Added facade_get_node_usb_audio_tx_fifo_sample_count facade in audio_bidirectional example when USB_AUDIO_ENABLED is defined to 1 to get the number of samples in the USB audio output (EPIN) fifo on the node.
Added uint32_t facade_get_node_usb_audio_tx_fifo_sample_count facade in audio_unidirectional example when USB_AUDIO_ENABLED is defined to 1 to get the number of samples in the USB audio output (EPIN) fifo on the node.
Added I2S_DMA_BIT_DEPTH definition in sac_cfg.h to define the number of bits required per sample for the DMA transfer.
Added audio_core_cdc_backend.c to separate sac_facade_cdc_processing_init and sac_facade_cdc_format_stats from the rest of the SAC backend functions.
Added audio_core_i2s_backend.c to implement sac_facade_audio_endpoint_init for an I2S endpoint.
Added audio_core_tinyusb_backend.c to implement sac_facade_audio_endpoint_init for a TinyUSB USB audio endpoint.
Added MAIN_CHANNEL_USB_FS_PRODUCER_BUFFERING and BACK_CHANNEL_USB_FS_PRODUCER_BUFFERING definitions to increase TX queue buffering size when using USB Full-Speed.
Added configure_max98091 and configure_sai in audio examples backend to dynamically configure the I2S endpoint based on the sac_cfg.h definitions.
Added facade_button_callbacks_t structure in all examples facade.
Added facade_set_button_callbacks function to all examples facades and backends.
Added pairing_button_callback function to all examples to handle pairing button depending on current pairing state.
Added facade_wait_for_interrupt function to common backend.
Added puretone_headset application with quasar backend.
Added facade_app_audio_cdc_set_target_queue_size function to audio_core_cdc_backend.c.
ChangedUpdated the fallback initialization in audio_bidirectional and audio_unidirectional to be compatible with the new audio fallback api.
Increased sac memory pool size in the audio bidirectional node application.
Removed error check in fragmentation apps before generating pseudo data.
Refactored common functionality used across all application examples into a shared common_facade.h to eliminate code duplication and improve maintainability.
The order of `tx_timeslots` & `rx_timeslots` under private globals are now consistent in all app examples.
All examples are now refactored to use common_facade.h.
Renamed facade_set_sai_complete_callback to facade_set_audio_complete_callback.
Moved facade_audio_coord_init, facade_audio_node_init, facade_audio_deinit, and facade_set_audio_complete_callback from audio_unidirectional_backend.c to audio_unidirectional_i2s_backend.c and audio_unidirectional_tinyusb_backend.c.
Moved facade_audio_coord_init, facade_audio_node_init, facade_audio_deinit, and facade_set_audio_complete_callback from audio_bidirectional_backend.c to audio_bidirectional_i2s_backend.c and audio_bidirectional_tinyusb_backend.c.
Changed sac_cfg.h’s I2S_BIT_DEPTH definition to be the resolution of audio samples at the I2S peripheral.
Changed facade_button_handling to remove function pointer parameters. Button callbacks are now configured through facade_set_button_callbacks.
Updated all baremetal applications to use facade_wait_for_interrupt in main loops.
Replaced channel_sequence array size by channel_frequency array size to define the number of channels to configure in all examples.
RemovedRemoved instance of
swc_node_tin each SDK applications.
Documentation
Release Notes:
AddedAdded documentation on the Audio Sample Accumulator.
Added documentation about USB audio.
Added PAIRING_MINIMUM_TIMEOUT_SEC description.
Added PAIRING_DISCOVERY_LIST_MINIMUM_SIZE description.
Added a note in Applications documentation on how to enable QSPI.
Added PureTone headset application documentation to the SDK documentation.
ChangedUpdated the swc_hal function names to be more generic in terms of the transfer type.
Updated the porting guide to document a QSPI communication type implementation.
Update swc_init parameters description.
Update pairing module documentation to reflect automatic frequency selection based on radio model.
Update fallback section in audio bidirectional documentation.
Update terminal screenshots in audio unidirectional and bidirectional documentation for updated statistics.
Moved credit-flow documentation from swc_connection_cfg_t documentation to a dedicated connection feature.
Moved Windows Long Path Support documentation to a separate page.
FixedUpdate documentation to make it obvious that some swc_hal_facade.h functions are only required for either SPI or QSPI peripherals.
RemovedRemoved deprecated fields documentation.
Wireless Core
Release Notes:
AddedAdded missing const identifier to parameters of the public SWC API functions.
Added half duplex (QSPI) radio transfer functions in the swc_hal_facade.h.
Added an SWC error retrieval function in the pairing module.
A new function, called swc_config_hardware_interface(), was added to swc_api.c/.h to link the necessary swc_hal_facade functions to the PHY layer.
Implemented RSSI calibration to reduce link margin variability between different radio modules.
Added swc_get_current_chip_rate to get the current chip rate used by the MAC layer.
Added swc_get_current_isi_mitig to get the current ISI mitigation used by the MAC layer.
Added _SWC_CHIP_RATE_COUNT definition.
Added two new statistic parameters to the swc_statistics_t structure.
packet_invalid_data_size_count: Increments when a packet is received but is discarded because the frame data size is invalid.
packet_invalid_header_size_count: Increments when a packet is received but is discarded because the frame header size is invalid.
Added swc_node_cfg_t as an input parameter on swc_init.
Added link margin value to TX statistics formatted output.
Added SWC_WARN_ALREADY_DISCONNECTED when calling swc_disconnect but the wireless core is already disconnected.
Added a void* user argument to callback registrations to allow passing custom context during callback invocation.
ChangedChanged the qualifier of the swc_connection_concurrency_cfg_t to a const pointer on the function:
swc_connection_set_concurrency_cfg()
Updated the swc_hal_facade.h to have more generic radio transfer function names: full_duplex and half_duplex.
Implemented the new swc_hal_facade.h QSPI function as weak in swc_hal_facade.c.
The process for configuring a connection to receive broadcast frames has been simplified. Setting the destination address to the broadcast address (0xFF) on the receiver (RX) side is now supported and will work like any RX connection.
Renamed swc_get_phy_mode to swc_get_current_phy_mode.
Added a condition in swc_connection_init() to allocate memory for channels only when we have main timeslots.
Updated swc_connection_add_fallback_channel to return error if used on RX connection.
Modified swc_init for configure swc node using swc_node_cfg_t.
SWC API now returns warning codes for non-fatal conditions.
Changed some errors into warnings:
SWC_ERR_TX_PULSE_COUNT is now SWC_WARN_TX_PULSE_COUNT.
SWC_ERR_TX_PULSE_COUNT_OFFSET is now SWC_WARN_TX_PULSE_COUNT_OFFSET.
SWC_ERR_RX_PULSE_COUNT is now SWC_WARN_RX_PULSE_COUNT.
SWC_ERR_NO_BUFFER_AVAILABLE is now SWC_WARN_NO_BUFFER_AVAILABLE.
SWC_ERR_SEND_QUEUE_FULL is now SWC_WARN_SEND_QUEUE_FULL.
SWC_ERR_ALREADY_CONNECTED is now SWC_WARN_ALREADY_CONNECTED.
SWC_ERR_RX_OVERRUN is now SWC_WARN_RX_OVERRUN.
swc_disconnect now returns SWC_WARN_ALREADY_DISCONNECTED instead of SWC_ERR_NOT_CONNECTED.
Removed unused error codes:
SWC_ERR_CCA_THRESHOLD
SWC_ERR_THROTTLING_ON_RX_CONNECTION
SWC_ERR_NO_PAYLOAD_MEM_ALLOC_ON_RX_CONNECTION
SWC_ERR_NON_ZERO_PRIORITY_WITHOUT_CONN_ID
SWC_ERR_MULTI_RADIO_HAL_INVALID
SWC_ERR_RANGING_NOT_SUPPORTED
SWC_ERR_ADD_RANGING_SETTINGS_ON_INVALID_CONNECTION
SWC_ERR_INVALID_PULSE_CONFIG_27M
Replaced the macros IS_SR1020 and IS_SR1120 by IS_SR1X20.
Replaced the macro IS_SR1010 by IS_SR1X10.
When using multiple connections in a timeslot with the Connection Priority feature, the maximum payload size and CCA retry window will now be used to configure a packet reception.
FixedFixed an issue where the first payload of a new transfer would be dropped if it arrived while a previous fragmented transfer was incomplete.
Fixed the TX CCA try count value when using a fallback configuration and a payload size bigger than the first threshold.
Fixed an issue with sleep level per timeslot where the sync would be lost periodically.
Fixed an issue where the dynamic phy rate did not work when reducing phy rate.
Fixed a compilation warning in the MAC statistics module when link statistics are disabled.
Fix incorrect RX timeout value for RX frames.
Fix SR1010 pairing frequency out of range error.
Pairing now detects radio model and uses frequency code 100 (4.096 GHz) for SR1010 radios instead of 195 (7.987 GHz).
SR1020/SR1120 continue using frequency code 195 (7.987 GHz).
Introduced PAIRING_SR1x10_CHANNEL_FREQUENCY constant (100) for SR1010 radios.
Renamed PAIRING_DEFAULT_CHANNEL_FREQUENCY to PAIRING_SR1x20_CHANNEL_FREQUENCY (195) for SR1020/SR1120 radios.
Fixed a hardfault condition when getting overrun with the fragmentation module enabled.
Fixed overrun statistics when using the fragmentation module.
Fixed data corruption case when losing frames on a connection with fragmentation without guaranteed-delivery.
RemovedRemoved the
swc_node_tstructure from the SWC API.Removed return value
swc_node_tfrom theswc_node_initAPI.Removed input parameters
swc_node_tfrom the following API functions:swc_node_enable_legacy_sfd()swc_radio_module_init()swc_node_set_radio_irq_polarity()swc_node_set_radio_spi_mode()swc_node_set_low_power_callback()swc_node_set_sleep_level()swc_node_is_low_power_allowed()swc_connection_init()swc_get_beacon_connection_config()swc_connection_add_channel()swc_connection_add_fallback_channel()swc_connection_optimized_latency()swc_connection_set_credit_flow_ctrl()swc_connection_set_retransmission()swc_connection_set_connection_priority()swc_connection_set_connection_slots_priority()swc_setup()swc_connection_format_stats()swc_node_set_radio_outimped()
Removed chip_repet from swc_connection_cfg structure.
swc_node_init function.
Audio Core
Release Notes:
AddedAdded sac_node_data_memcpy api to safely copy audio data into a node.
Added max_payload_size field to sac_pipeline_cfg_t to be able to allocate more memory during audio pipeline processing.
Added sac_sample_accumulator processing stage.
Added SAC_WARN_NO_PACKET_TO_PRODUCE warning.
Added sac_fallback_gate_is_process_active gate.
Added sac_fallback_add_mode function to add a mode to a fallback instance.
Added sac_fallback_mode_cfg_t structure to configure a fallback mode.
Added sac_fallback_mode_assign_process function to assign a processing stage to a fallback mode using the fallback mode index.
Added sac_fallback_is_process_in_current_mode function to check is a process pointer is part of the process list of the current fallback mode.
Added sac_fallback_get_current_mode function to get the index of the current fallback mode.
Added sac_fallback_set_current_mode function to set the current fallback mode using the mode’s index.
Added sac_fallback_mode_get_active_state function to get whether a mode is active or not.
Added sac_fallback_mode_set_active_state function to set whether a mode is active or not.
Added sac_fallback_get_manual_mode function to get whether the fallback is in manual mode.
Added SAC_ERR_FALLBACK_MODE_COUNT error.
Added SAC_ERR_FALLBACK_MODE_DUPLICATE error.
Added the ability for the fallback module to recover quickly to the highest fallback mode after connecting to the remote device.
Added a utility macro called SAC_CALCULATE_SAMPLE_COUNT to calculate the number of samples in a packet.
Added the following modes to the audio core packing processing stage:
SAC_PACK_24BITS_20BITS
SAC_SCALE_24BITS_20BITS
SAC_UNPACK_24BITS_20BITS
SAC_SCALE_20BITS_24BITS
Added SAC_ERR_PIPELINE_PAYLOAD_NOT_BIG_ENOUGH error to the sac_status_t enumeration.
ChangedChanged the fallback process to support multiple modes.
Renamed sac_fallback_get_defaults to sac_fallback_mode_get_defaults. It is now used to initialize a fallback mode configuration structure instead of the fallback instance.
Updated the fallback statistics to indicate how many times each mode was triggered / recovered to.
Updated the fallback statistics to indicate the percentage of packets that were processed in each state.
Updated the fallback statistics to indicate the good count recovery value and its threshold.
Updated the fallback statistics to indicate the name of the current fallback mode.
Changed the sac_header_t fallback field to support up to 8 fallback modes.
Changed the sac_processing_interface_t gate prototype to receive a process handle instead of its instance.
Updated the endpoint queue implementation to fully support assigning a node to multiple queues.
Renamed the sac_facade_codec_endpoint_init facade to sac_facade_audio_endpoint_init to be more generic.
FixedFixed some outdated function description.
RemovedRemoved sac_fallback_gate_is_fallback_on gate.
Removed sac_fallback_gate_is_fallback_off gate.
Removed sac_fallback_get_fallback_count function.
Removed sac_fallback_clear_fallback_flag function. sac_fallback_set_fallback_mode to be used instead.
Removed sac_fallback_set_fallback_flag function. sac_fallback_set_fallback_mode to be used instead.
Removed sac_fallback_is_active function. sac_fallback_get_current_mode_index to be used instead.
Removed sac_fallback_state_t enumeration.
Quasar BSP
Release Notes:
AddedImplemented Rx callback functionality for UART. Allows setting a callback for a selected UART, which is triggered during its receive interrupt (IRQ).
Added centralized error handling framework in quasar_error.h/quasar_error.c.
Added quasar_bsp_status_t enum with specific error codes for all BSP modules.
Added ASSERT_QUASAR_BSP_STATUS macro for automatic error handling.
Added weak quasar_bsp_error_handler() and quasar_bsp_warning_handler() functions (overridable by backends).
Updated the wireless core backend to implement new functions for QSPI in swc_hal_facade.h.
swc_hal_radio_1_transfer_half_duplex_rx_blocking
swc_hal_radio_1_transfer_half_duplex_rx_non_blocking
swc_hal_radio_1_transfer_half_duplex_tx_blocking
swc_hal_radio_1_transfer_half_duplex_tx_non_blocking
swc_hal_radio_1_set_access_mode_spi
swc_hal_radio_1_set_access_mode_qspi
ChangedUpdated BSP modules (ADC, Audio, Clock, DMA, I2C, SPI, UART, USB, Power, Radio, etc.) to return quasar_bsp_status_t and propagate errors.
Modified BSP function signatures to include error output parameters where applicable.
Refactored the system clock configuration to happen at a lower level in SystemInit().
Assembly routines for initializing the .data and .bss sections were optimized to use faster multi-word memory transfers.
Updated default QUASAR VDD selection from 3.3V to 1.8V in common_backend and bsp_validator_backend.
Optimized frequently used functions from the BSP module.
Replaced the custom GPIO port type with the STM32 HAL provided type.
FixedFixed initialization issue in quasar_uart_init(…) (in quasar_uart.c): fifo_tx was being initialized twice, while fifo_rx initialization was missing.
Fixed some outdated function description.
RemovedRemoved the custom type that was previously used for the GPIO ports.
EVK1.4 BSP
Release Notes:
AddedAdded Null pointer handling in evk_timer_ext.c.
Libraries
Release Notes:
FixedFixed the wrong name and description of the element size on the documentation of the function circular_queue_init.
Modules
Release Notes:
AddedAdded a tinyusb_audio module to wrap some USB audio functionalities.
ChangedChanged the tinyusb_baremetal timer behavior to be triggered by the USB irq instead of periodically to allow for better performance with USB audio.
Middleware
Release Notes:
AddedAdded cdc_audio_hid TinyUSB configuration to support USB audio with media controls.
ChangedUpdated the TinyUSB library from 0.18.0 to 0.20.0.
Virtual Environment
Release Notes:
ChangedMigrated the development environment dependency management from Micromamba to Pixi.
Introduced the brand new official SPARK SDK VS Code extension, drastically simplifying the user environment setup and automation.
Simply install the extension and the dependencies will automatically install.
Toolchain
Release Notes:
ChangedConsolidated all custom dependencies into a dedicated SPARK Conda repository managed by Pixi, completely eliminating manual installation steps and fragile workarounds in the bootstrap scripts.
v2.2.0 - 2025-08-28
General
Release Notes:
RemovedRemoved 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:
AddedImplemented 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.
ChangedUse 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.
RemovedRemove 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:
AddedAdded 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.
ChangedChanged the cores documentation structure to split subject into different files.
Wireless Core
Release Notes:
AddedAdded 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.
ChangedThe 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.
FixedFixed 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.
RemovedRemoved swc_uwb_regulation_t.
Removed uwb_regulation from pairing_cfg_t.
Removed PAIRING_ERR_REGULATION_OPTION_NOT_SUPPORTED error.
Audio Core
Release Notes:
AddedAdded 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.
ChangedIncreased 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.
RemovedRemoved 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:
AddedAdded 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.
ChangedThe 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.
FixedFix 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.
RemovedRemoved irq_callback typedef.
EVK1.4 BSP
Release Notes:
AddedAdded 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.
ChangedThe 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.
RemovedRemoved irq_callback definition. Replaced by explicit function pointer cast.
Libraries
Release Notes:
ChangedChanged the critical section library file structure to allow custom implementations for different hardware.
RemovedRemoved queue_critical_cfg_t.
Removed queue_critical_cfg_t parameter from queue_init() function.
Modules
Release Notes:
ChangedRenamed 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:
ChangedUpdated 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:
ChangedUpdated cmsis_device_u5 third-party library from v1.3.0 to v1.4.1.
Updated stm32u5xx_hal_driver third-party library from v1.4.0 to v1.6.1.
Updated cmsis_device_g4 third-party library from v1.2.2 to v1.2.5.
Updated stm32g4xx_hal_driver third-party library from v1.2.2-58-g75ce54b to v1.2.5.
v2.1.1 - 2025-06-16
Wireless Core
Release Notes:
AddedAdded 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.
ChangedOptimized SR1100 receiver integrator gain selection to accelerate radio frame preparation.
FixedFixed 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:
AddedImproved 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.
ChangedPendSV 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.
FixedFixed 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.
RemovedRemoved 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:
AddedRenamed 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.
ChangedAdjusted all frame diagrams in
Core - Wireless Core - Conceptsdocumentation to include the 4-bit IOOK header.Adjusted the SR1120 Sync frame diagram in
Core - Wireless Core - Conceptsto 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:
AddedAdded “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.
ChangedRenamed 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.
FixedFixed 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.
RemovedRemoved 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:
AddedAdded 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.
ChangedInitialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.
RemovedRemoved unused sac_pipeline_consume_all() function prototype from
sac_api.h.
Quasar BSP
Release Notes:
AddedAdded 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.
ChangedReworked 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.
FixedFix timer prescaler update.
Fix ADC battery level monitoring.
RemovedRemoved pendsv_prio from quasar_cfg structure in quasar.h.
EVK1.4 BSP
Release Notes:
AddedAdded 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.
ChangedReworked 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.
RemovedRemoved pendsv_prio from evk_cfg structure in evk.h.
Removed unused IRQ priority definitions:
APP_TIMER_HIGH,SYSTICK,UART4,LPUART,APP_TIMERandBASIC_MS_TIMER.Removed
HAL_UART_MspInitandHAL_UART_MspDeInitlegacy functions.
Drivers
Release Notes:
ChangedInitialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.
Libraries
Release Notes:
ChangedInitialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.
Modules
Release Notes:
ChangedInitialized all previously uninitialized local variables to improve code safety and predictability by eliminating potential undefined behavior caused by accessing uninitialized variables.
Middleware
Release Notes:
ChangedInitialized 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:
AddedAdded installation of STM32 USB DFU driver during environment setup on Windows PCs.
VS Code
Release Notes:
AddedAdded VS Code task to flash a compiled binary into a STM32 devices in USB DFU bootloader mode.
ChangedAdjusted 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:
FixedModify 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.
AddedNew 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.
ChangedTransitioned from the now legacy
interfacemodule to a newfacade/backendapproach. 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.
FixedWindows bootstrap now checks for missing DLLs required by micromamba, and installs them when needed.
Increase Hello World
MAX_PAYLOAD_SIZEfrom 20 to 30.Adjust Hello World connections
max_payload_sizefromMAX_PAYLOAD_SIZEtoMAX_PAYLOAD_SIZE + ENDING_NULL_CHARACTER_SIZE.
RemovedAudio 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.
AddedNew Audio Bidirectional application documentation.
New Audio Unidirectional application documentation.
New Datalink application documentation.
New Hello World RTOS application documentation.
New section in Hardware Description for the Quasar hardware.
New Viewing the Terminal section in Getting Started.
New Calibration section in the Wireless Core API documentation.
New Project Guidelines article in the Porting Guide.
New Facades and Backends article in the Porting Guide.
New SPARK Audio Core article in the Porting Guide.
New API reference for EVK1.4 BSP.
New API reference for Quasar BSP.
The Wireless Core documentation has been updated with the new SR1120 specificities.
New Clock Drift Compensation subsection Phase-Locked Loop (PLL) Adjustment (replaces Clock Steering).
ChangedThe Development Environment documentation has been updated.
The Getting Started documentation has been updated.
The Structure Overview documentation has been updated.
The Porting Checklist article of the Porting Guide has been updated.
RemovedRemoving ``-fno-omit-frame-pointer`` Flag` section in the Porting Optimizations article.
The Clock Drift Compensation Clock Steering (replaced by Phase-Locked Loop (PLL) Adjustment).
BSP iface article.
Ranging Core documentation.
Annexes from the Porting Guide.
cdc_enable from Audio Core API documentation.
Wireless Core
Release notes:
API overhaul and support for the new SR1120 transceiver.
AddedNew
SWC_ERR_NULL_TIMESLOT_DURATIONerror code to handle invalid timeslot durations of 0.New
SWC_ERR_INVALID_OPERATION_AFTER_SETUPerror code to handle invalid instructions that can only be done afterswc_setup().New
SWC_ERR_CCA_INVALID_PARAMETERSerror code to handle incorrect CCA settings.New
SWC_ERR_NO_CHANNEL_INITerror code to catch connection with no channel assigned.New statistics metric
packet_retry_count.New API call
swc_node_get_radio_product_modelto 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_countin theswc_channel_cfg_tstructure.New
fallback_settings.tx_pulse_widthin theswc_channel_cfg_tstructure.New
fallback_settings.tx_pulse_gainin theswc_channel_cfg_tstructure.New Credit-Based Flow Control mechanism. Enable it via the
swc_connection_set_credit_flow_ctrl()API call.New
packet_ack_data_received_countstatistic inswc_statistics_tthat counts the reception of auto-reply frames with data.New
packet_ack_data_send_countstatistic inswc_statistics_tthat 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_tnow includes acca_event_countmember.
Changedswc_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_tstructure. 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.
FixedSetting PAN ID LSB to 0xFF is now prevented and doing so will return a
SWC_ERR_PAN_IDerror 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.
Removedfallback_settings.tx_pulse_count_offsetfromswc_connection_cfg_t.fallback_settings.tx_pulse_width_offsetfromswc_connection_cfg_t.fallback_settings.tx_pulse_gain_offsetfromswc_connection_cfg_t.packet_retry_countfromswc_statistics_t.
DeprecatedIn
swc_radio_cfg_t,spi_modemember is now ignored (unused) for the SR1020 transceiver; SPI mode is now forced toSPI_FASTinternally.
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.
AddedSampling Rate Conversion (SRC) is now compatible with multi-channel audio streams.
SRC support for 24-bit and 32-bit depths.
New
sac_cdc_pllprocessing 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_STATUSmacro in thesac_utils.hfile.New error code
SAC_ERR_NOT_INITindicating that the SPARK Audio Core has not been initialized.New error code
SAC_ERR_FALLBACK_PROC_NOT_FOUNDindicating that a fallback process was not found in the processing stage list.New error code
SAC_WARN_PROCESSING_Q_EMPTYindicating that there aren’t any nodes available for processing.New error code
SAC_ERR_NODE_DATA_SIZE_TOO_SMALLindicating that a node is too small for the data that needs to be copied into it.The structure
sac_fallback_instance_tnow includes aconnectionmember.The structure
sac_pipeline_tnow includes a_internal.processing_queuemember. This queue is used to allocate output nodes for processing.The structure
sac_fallback_instance_tnow includes atick_frequency_hzmember.The structure
sac_fallback_instance_tnow includes aget_tickfunction pointer.The structure
sac_endpoint_tnow includes a_internal.extra_queue_sizemember.Defined default constants for
CDC_DEFAULT_RESAMPLING_LENGTH(1440) andCDC_DEFAULT_QUEUE_AVERAGE(1000) while allowing user to set usingtarget_compile_definitions.
ChangedFallback API calls now take input parameter
sac_fallback_module_instance_tand output parametersac_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_peakstatistic from thesac_pipeline_tstructure to thesac_fallback_link_margin_metrics_tstructure.Moved
consumer_cca_fail_count_peakstatistic from thesac_pipeline_tstructure to thesac_fallback_cca_metrics_tstructure.Reduced
SAC_MIN_PRODUCER_QUEUE_SIZEvalue 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()tosac_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_endpointtosac_dummy_endpointto make it reusable for other use cases.Refactored node names such as
input_node,output_nodeorprocessing_nodefor 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_ttosac_status_t.Renamed
SAC_ERR_NONEtoSAC_OK.Renamed
SAC_ERR_PRODUCER_Q_FULLtoSAC_WARN_PRODUCER_Q_FULL.Renamed
SAC_ERR_CONSUMER_Q_EMPTYtoSAC_WARN_CONSUMER_Q_EMPTY.Renamed
SAC_ERR_BUFFERING_NOT_COMPLETEtoSAC_WARN_BUFFERING_NOT_COMPLETE.Renamed
SAC_ERR_NO_SAMPLES_TO_PROCESStoSAC_WARN_NO_SAMPLES_TO_PROCESS.Renamed
SAC_ERR_PROCESSING_Q_EMPTYtoSAC_WARN_PROCESSING_Q_EMPTY.
FixedUnhandled 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.
RemovedClock Steering processing stage.
cdc_inflated_packets_countmember from thesac_statistics_tstructure.cdc_deflated_packets_countmember from thesac_statistics_tstructure.link_margin_conn_packets_per_secondmember from thesac_fallback_instance_tstructure.main_conn_packets_per_secondmember from thesac_fallback_instance_tstructure.cdc_enablemember from thesac_pipeline_tstructure.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_tstructure. The fallback module is now configured with the instance’s public fields.API call
sac_fallback_update_state(). Replaced by processing stage functionsac_fallback_process().API call
sac_fallback_update_stats(). Now handled by processing stage functionsac_fallback_process().API call
sac_fallback_gate_fallback_on_detect(). The processing stage functionsac_fallback_process()handles the audio header fallback field detection and sets the proper fallback state. The user can use API callsac_fallback_gate_is_fallback_on()instead.API call
sac_fallback_gate_fallback_off_detect(). The processing stage functionsac_fallback_process()handles the audio header fallback field detection and sets the proper fallback state. The user can use API callsac_fallback_gate_is_fallback_off()instead.
Quasar BSP
Initial release.
EVK1.4 BSP
AddedNew API call evk_audio_sai_deinit() to deinitialize the SAI.
ChangedMove HAL_IncTick call to TIM2 IRQ handler.
Drivers
No changes.
Libraries
Added[queue] New
data_sizemember added to thequeue_node_tstructure.
Changed[queue]
copy_countmember of thequeue_node_tstructure is now incremented when a node is enqueued on a normal queue. It will be decremented every time the node is dequeued.[queue]
copy_countmember of thequeue_node_tstructure is now initialized with a value to 0.
Removed[queue]
queue_inc_copy_count()private function.