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.
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.
New 6 - Removing -fno-omit-frame-pointer Flag section in the Porting Optimizations article.
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.
RemovedThe 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.