Changelog

SDK

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