Channel Sounding (CS)#
Channel Sounding.
Distances are calculated by following the steps below:
Initialize a sl_rtl_cs_libitem instance.
Set up the algorithm mode and CS parameters.
Create the estimator.
Process the CS procedure data into distance.
Get distance and/or likeliness estimates.
Enumerations#
Typedefs#
CS library item.
Functions#
Enumeration Documentation#
sl_rtl_cs_role#
sl_rtl_cs_role
Enumerator | |
---|---|
SL_RTL_CS_ROLE_INITIATOR | Initiator role. |
SL_RTL_CS_ROLE_REFLECTOR | Reflector role. |
757
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_algo_mode#
sl_rtl_cs_algo_mode
Enumerator | |
---|---|
SL_RTL_CS_ALGO_MODE_REAL_TIME_BASIC | Suitable for real-time tracking. |
SL_RTL_CS_ALGO_MODE_STATIC_HIGH_ACCURACY | Suitable for ranging between static objects with high-accuracy. |
762
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_mode#
sl_rtl_cs_mode
Enumerator | |
---|---|
SL_RTL_CS_MODE_CALIBRATION | Calibration mode with no distance estimation enabled. |
SL_RTL_CS_MODE_RTT | Round-trip time based estimation (RTT). |
SL_RTL_CS_MODE_PBR | Round-trip phase based estimation (PBR). |
771
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_rtt_type#
sl_rtl_cs_rtt_type
Enumerator | |
---|---|
SL_RTL_CS_RTT_TYPE_AAONLY | RTT AA Only. Currently unsupported type. |
SL_RTL_CS_RTT_TYPE_SS_32BIT | RTT with 32-bit sounding sequence. Currently unsupported type. |
SL_RTL_CS_RTT_TYPE_SS_96BIT | RTT with 96-bit sounding sequence. |
SL_RTL_CS_RTT_TYPE_RS_32BIT | RTT with 32-bit random sequence. Currently unsupported type. |
SL_RTL_CS_RTT_TYPE_RS_64BIT | RTT with 64-bit random sequence. Currently unsupported type. |
SL_RTL_CS_RTT_TYPE_RS_96BIT | RTT with 96-bit random sequence. Currently unsupported type. |
SL_RTL_CS_RTT_TYPE_RS_128BIT | RTT with 128-bit random sequence. Currently unsupported type. |
780
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_estimator_param_type#
sl_rtl_cs_estimator_param_type
Enumerator | |
---|---|
SL_RTL_LAST_KNOWN_DISTANCE | Last known distance from the user, if more recent than the last CS measurement. |
SL_RTL_RANGE_MIN | Minimum limit for the distance estimation range. |
SL_RTL_RANGE_MAX | Maximum limit for the distance estimation range. |
SL_RTL_REF_TX_POWER | Reference RSSI value of the TX-device at 1.0 m distance in dBm. Default value is -45.0 dBm. |
835
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_distance_estimate_type#
sl_rtl_cs_distance_estimate_type
Enumerator | |
---|---|
SL_RTL_CS_DISTANCE_ESTIMATE_TYPE_FILTERED | Distance estimate with built-in post-filtering. Note: The post-filtering would remove any large undesired jumps in the distance reported. However, post-filtering introduces latency in distance reported. |
SL_RTL_CS_DISTANCE_ESTIMATE_TYPE_RSSI | Distance estimate based on the Packet_RSSI in the calibration (Mode 0) steps |
SL_RTL_CS_DISTANCE_ESTIMATE_TYPE_RAW | Distance estimate based solely on the most recent procedure input. |
936
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_distance_estimate_confidence_type#
sl_rtl_cs_distance_estimate_confidence_type
Enumerator | |
---|---|
SL_RTL_CS_DISTANCE_ESTIMATE_CONFIDENCE_TYPE_LIKELINESS | Likeliness of the distance estimate accuracy, ranging from 0 to 1 |
SL_RTL_CS_DISTANCE_ESTIMATE_CONFIDENCE_TYPE_BIT_ERROR_RATE | Bit error rate in the RTT random or sounding sequence, ranging from 0 to 1. Only supported for RTT types (see sl_rtl_cs_rtt_type) with random sequence (RS) or sounding sequence (SS). |
948
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_distance_estimate_extended_info_type#
sl_rtl_cs_distance_estimate_extended_info_type
Enumerator | |
---|---|
SL_RTL_CS_DISTANCE_ESTIMATE_EXTENDED_INFO_TYPE_PROGRESS_PERCENTAGE | Estimation progress in percentage.
|
957
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
Typedef Documentation#
sl_rtl_cs_libitem#
typedef void* sl_rtl_cs_libitem
CS library item.
964
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
Function Documentation#
typedef#
typedef (struct { uint8_t channel_map[SL_RTL_CS_CHANNEL_MAP_SIZE];} )
N/A |
797
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct { uint8_t num_antenna_paths;uint8_t channel_map_repetition;uint32_t main_mode_repetition;uint8_t num_calib_steps;uint8_t T_PM_time;uint8_t T_IP1_time;uint8_t T_IP2_time;uint8_t T_FCS_time;uint8_t channel_selection_type;uint8_t ch3c_shape;uint8_t ch3c_jump;uint32_t subevent_len;uint8_t subevents_per_event;uint16_t subevent_interval;uint16_t event_interval;uint16_t procedure_interval;uint16_t procedure_count;uint8_t cs_sync_phy;sl_rtl_cs_rtt_type rtt_type :8;uint16_t acl_connection_interval;} )
N/A |
801
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (union { float last_known_distance;float range_min;float range_max;float ref_tx_power;} )
N/A |
848
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct { sl_rtl_cs_estimator_param_type type :8;sl_rtl_cs_estimator_param_value value;} )
N/A |
855
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct { uint8_t packet_quality;uint8_t packet_rssi;uint8_t packet_antenna;int16_t measured_freq_offset;} )
N/A |
860
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct { uint8_t packet_quality;uint8_t packet_nadm;int8_t packet_rssi;int16_t packet_rtt;uint8_t packet_antenna;} )
N/A |
867
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct tone { int32_t pct_i :SL_RTL_CS_PCT_IQ_BIT_LEN;int32_t pct_q :SL_RTL_CS_PCT_IQ_BIT_LEN;uint8_t quality_indicator;} )
N/A |
875
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct { uint8_t antenna_permutation_index;sl_rtl_cs_pbr_tone tones[];} )
N/A |
881
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct { sl_rtl_cs_mode step_mode :SL_RTL_CS_STEP_MODE_BIT_LEN;uint8_t step_channel;uint8_t step_data_length;1(union { sl_rtl_cs_mode_calib_data mode_calib_step;sl_rtl_cs_mode_rtt_data mode_rtt_step;sl_rtl_cs_mode_pbr_data mode_pbr_step;});} )
N/A |
889
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct { uint64_t subevent_timestamp_ms;int16_t frequency_compensation;int8_t reference_power_level;uint8_t num_steps;uint16_t step_data_count;uint8_t *step_data;} )
N/A |
901
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct { sl_rtl_cs_config cs_config;uint8_t initiator_subevent_data_count;sl_rtl_cs_subevent_data *initiator_subevent_data;uint8_t reflector_subevent_data_count;sl_rtl_cs_subevent_data *reflector_subevent_data;} )
N/A |
928
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
typedef#
typedef (struct { struct timespec timestamp;uint64_t timestamp_ms;} )
N/A |
966
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_init#
enum sl_rtl_error_code sl_rtl_cs_init (sl_rtl_cs_libitem * item)
[in] | item | Pointer to the libitem to be initialized |
Initialize the CS libitem instance.
Returns
SL_RTL_ERROR_SUCCESS if successful
994
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_deinit#
enum sl_rtl_error_code sl_rtl_cs_deinit (sl_rtl_cs_libitem * item)
[in] | item | Pointer to the libitem to be deinitialized |
Deinitialize a libitem instance of the CS estimator.
Returns
SL_RTL_ERROR_SUCCESS if successful
1002
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_set_algo_mode#
enum sl_rtl_error_code sl_rtl_cs_set_algo_mode (sl_rtl_cs_libitem * item, const sl_rtl_cs_algo_mode mode)
[in] | item | Pointer to the initialized CS libitem |
[in] | mode | Estimator mode as sl_rtl_cs_algo_mode |
Set the estimation algorithm mode.
Returns
SL_RTL_ERROR_SUCCESS if successful
Set the estimation mode. For example, SL_RTL_CS_ALGO_MODE_REAL_TIME_BASIC sets medium filtering. For further description of the modes, see the documentation of::sl_rtl_cs_algo_mode. CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED. This method should be called before estimator is created for CS libitem, or it will fail with error code SL_RTL_ERROR_ESTIMATOR_ALREADY_CREATED.
1020
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_set_cs_mode#
enum sl_rtl_error_code sl_rtl_cs_set_cs_mode (sl_rtl_cs_libitem * item, const sl_rtl_cs_mode cs_mode)
[in] | item | Pointer to the initialized CS libitem |
[in] | cs_mode | cs_mode as sl_rtl_cs_mode |
Set the estimation CS mode.
Returns
SL_RTL_ERROR_SUCCESS if successful
Set the desired cs_mode. For example, SL_RTL_CS_MODE_PBR uses round-trip phase based cs_mode. CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED. This method should be called before estimator is created for CS libitem, or it will fail with error code SL_RTL_ERROR_ESTIMATOR_ALREADY_CREATED.
1037
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_set_cs_params#
enum sl_rtl_error_code sl_rtl_cs_set_cs_params (sl_rtl_cs_libitem * item, const sl_rtl_cs_params * parameters)
[in] | item | Pointer to the initialized CS libitem |
[in] | parameters | cs_params as ::sl_rtl_cs_params |
Set the estimation CS parameters.
Returns
SL_RTL_ERROR_SUCCESS if successful
Set the parameters for the estimator. CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED. This method should be called before estimator is created for CS libitem, or it will fail with error code SL_RTL_ERROR_ESTIMATOR_ALREADY_CREATED.
1054
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_create_estimator#
enum sl_rtl_error_code sl_rtl_cs_create_estimator (sl_rtl_cs_libitem * item)
[in] | item | Pointer to the initialized and configured CS libitem |
Create an estimator with the given parameters after initializing the libitem.
Returns
SL_RTL_ERROR_SUCCESS if successful
CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED. This method should be called before estimator is created for CS libitem, or it will fail with error code SL_RTL_ERROR_ESTIMATOR_ALREADY_CREATED.
1069
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_set_estimator_param#
enum sl_rtl_error_code sl_rtl_cs_set_estimator_param (sl_rtl_cs_libitem * item, const sl_rtl_cs_estimator_param * param)
[in] | item | Pointer to the initialized and configured CS libitem |
[in] | param | Data structure with the CS algorithm parameter to be set |
Set CS algorithm parameters. The function can be called any time before or during the processing calls.
Returns
SL_RTL_ERROR_SUCCESS if successful
CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED. This method should be called after estimator is created for CS libitem, or it will fail with error code SL_RTL_ERROR_ESTIMATOR_NOT_CREATED.
1086
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_process#
enum sl_rtl_error_code sl_rtl_cs_process (sl_rtl_cs_libitem * item, const uint8_t procedure_count, const sl_rtl_cs_procedure * procedure_data)
[in] | item | Pointer to the initialized and configured CS libitem |
[in] | procedure_count | Number of procedures in the procedure_data array |
[in] | procedure_data | Data structure with the completed CS procedures |
Calculate distance estimate based on CS procedures.
Returns
SL_RTL_ERROR_SUCCESS if successful and SL_RTL_ERROR_ESTIMATION_IN_PROGRESS if estimate is not yet final and more input data needs to be processed.
Calculate the distance estimate from the given procedure data. The function can be called with multiple procedures. Use sl_rtl_cs_get_distance to fetch the latest distance estimate. CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED. This method should be called after estimator is created for CS libitem, or it will fail with error code SL_RTL_ERROR_ESTIMATOR_NOT_CREATED.
1108
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_get_distance_estimate#
enum sl_rtl_error_code sl_rtl_cs_get_distance_estimate (sl_rtl_cs_libitem * item, const sl_rtl_cs_distance_estimate_type estimate_type, float * distance)
[in] | item | Pointer to the initialized CS libitem |
[in] | estimate_type | Type of distance estimate |
[out] | distance | Distance out in meters. |
Get distance estimate
Returns
SL_RTL_ERROR_SUCCESS if successful
CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED. This method should be called after estimator is created for CS libitem, or it will fail with error code SL_RTL_ERROR_ESTIMATOR_NOT_CREATED.
1127
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_get_distance_estimate_confidence#
enum sl_rtl_error_code sl_rtl_cs_get_distance_estimate_confidence (sl_rtl_cs_libitem * item, const sl_rtl_cs_distance_estimate_confidence_type confidence_type, float * confidence)
[in] | item | Pointer to the initialized CS libitem |
[in] | confidence_type | Type of confidence estimate |
[out] | confidence | Confidence between 0.0 - 1.0 (unlikely - likely) of the estimated distance |
Get distance estimate confidence.
Returns
SL_RTL_ERROR_SUCCESS if successful
CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED. This method should be called after estimator is created for CS libitem, or it will fail with error code SL_RTL_ERROR_ESTIMATOR_NOT_CREATED.
1147
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_get_distance_estimate_extended_info#
enum sl_rtl_error_code sl_rtl_cs_get_distance_estimate_extended_info (sl_rtl_cs_libitem * item, const sl_rtl_cs_distance_estimate_extended_info_type extended_info_type, float * extended_info)
[in] | item | Pointer to the initialized CS libitem |
[in] | extended_info_type | Type of distance estimate extended information |
[out] | extended_info | Extended info value depending on the extedended_info_type selection |
Get distance estimate extended information.
Returns
SL_RTL_ERROR_SUCCESS if successful
CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED. This method should be called after estimator is created for CS libitem, or it will fail with error code SL_RTL_ERROR_ESTIMATOR_NOT_CREATED.
1168
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_log_enable#
enum sl_rtl_error_code sl_rtl_cs_log_enable (sl_rtl_cs_libitem * item, const sl_rtl_cs_log_params * log_params)
[in] | item | Pointer to the CS libitem |
[in] | log_params | Pointer to the log initialisation parameters |
Enable logging for the given CS libitem.
Returns
SL_RTL_ERROR_SUCCESS if successful
CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED.
1184
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_log_disable#
enum sl_rtl_error_code sl_rtl_cs_log_disable (sl_rtl_cs_libitem * item)
[in] | item | Pointer to the CS libitem |
Disable logging for the given CS libitem.
Returns
SL_RTL_ERROR_SUCCESS if successful
CS libitem must be initialized before calling this method, or it will fail with return code SL_RTL_ERROR_NOT_INITIALIZED.
1196
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
sl_rtl_cs_log_get_instance_id#
enum sl_rtl_error_code sl_rtl_cs_log_get_instance_id (sl_rtl_cs_libitem * item, uint8_t * instance_id)
[in] | item | Pointer to the CS libitem |
[out] | instance_id | Instance ID of the given CS libitem |
Get the instance ID of the given CS libitem.
Returns
SL_RTL_ERROR_SUCCESS if successful
1205
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
Macro Definition Documentation#
SL_RTL_CS_PCT_IQ_BIT_LEN#
#define SL_RTL_CS_PCT_IQ_BIT_LENValue:
12
Number of bits used for indicating I or Q sample in the phase correction term (PCT) in CS step data.
749
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
SL_RTL_CS_STEP_MODE_BIT_LEN#
#define SL_RTL_CS_STEP_MODE_BIT_LENValue:
8
Number of bits used for indicating step mode in CS step data.
752
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h
SL_RTL_CS_CHANNEL_MAP_SIZE#
#define SL_RTL_CS_CHANNEL_MAP_SIZEValue:
10
Size of the channel map in bytes.
754
of file /mnt/raid/workspaces/ws.PnjKN2fAf/overlay/gsdk/util/silicon_labs/rtl/inc/sl_rtl_clib_api.h