Angle of Arrival / Departure#
Angle of Arrival / Departure.
These functions are related to the calculation of the Angle of Arrival and Angle of Departure from I/Q samples. The angles can be calculated following these steps:
Initialize a sl_rtl_aox_libitem instance.
Set up the antenna array and angle calculation parameters.
Create the estimator.
Set the antenna switching pattern.
Input the I/Q data into the libitem.
Process the I/Q data into an angle.
Modules#
sl_rtl_clib_iq_sample_qa_antenna_data_t
sl_rtl_clib_iq_sample_qa_dataset_t
Enumerations#
AoX antenna array type.
AoA, AoD (and AoX for backward compatibility) estimator modes.
Typedefs#
Angle of Arrival / Departure library item.
Angle of Arrival / Departure antenna array radiation pattern.
Functions#
Macros#
Enumeration Documentation#
sl_rtl_aox_array_type#
sl_rtl_aox_array_type
AoX antenna array type.
Enumerator | |
---|---|
SL_RTL_AOX_ARRAY_TYPE_4x4_URA | Silicon Labs Ref. 4x4 Uniform Rectangular Array. |
SL_RTL_AOX_ARRAY_TYPE_3x3_URA | Silicon Labs Ref. 3x3 Uniform Rectangular Array. |
SL_RTL_AOX_ARRAY_TYPE_1x4_ULA | Silicon Labs Ref. 1x4 Uniform Linear Array. |
SL_RTL_AOX_ARRAY_TYPE_4x4_DP_URA | Silicon Labs Ref. 4x4 Uniform Dual Polarized Rectangular Array. |
SL_RTL_AOX_ARRAY_TYPE_COREHW_15x15_DP | CoreHw Ref. 150 mm x 150 mm, 8 Element Dual Polarized Array. |
SL_RTL_AOX_ARRAY_TYPE_COREHW_12x12_DP | CoreHw Ref. 120 mm x 120 mm, 8 Element Dual Polarized Array. |
SL_RTL_AOX_ARRAY_TYPE_COREHW_4x4_URA | CoreHw Ref. 4x4 Uniform Rectangular Array. |
SL_RTL_AOX_ARRAY_TYPE_COREHW_2x2_URA | CoreHw Ref. 2x2 Uniform Rectangular Array. |
SL_RTL_AOX_ARRAY_TYPE_LAST | Placeholder. |
96
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_switch_pattern_array#
sl_rtl_aox_switch_pattern_array
Enumerator | |
---|---|
SL_RTL_AOX_SWITCH_PATTERN_ARRAY_4x4_CP | |
SL_RTL_AOX_SWITCH_PATTERN_ARRAY_4x4_DP | |
SL_RTL_AOX_SWITCH_PATTERN_ARRAY_LAST |
109
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_switch_pattern_options#
sl_rtl_aox_switch_pattern_options
Enumerator | |
---|---|
SL_RTL_AOX_SWITCH_PATTERN_OPTIONS_DUAL_POLARIZED | |
SL_RTL_AOX_SWITCH_PATTERN_OPTIONS_EXTRA_REFERENCE |
116
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_mode#
sl_rtl_aox_mode
AoA, AoD (and AoX for backward compatibility) estimator modes.
Enumerator | |
---|---|
SL_RTL_AOA_MODE_ONE_SHOT_BASIC | Medium filtering, medium response. Returns 2D angle, requires 10 rounds. Most suitable for single shot measurement. |
SL_RTL_AOA_MODE_ONE_SHOT_BASIC_LIGHTWEIGHT | Medium filtering, medium response, low CPU cost & low elevation resolution. 2D angle, req. 10 rounds. Most suitable for single shot measurement. |
SL_RTL_AOA_MODE_ONE_SHOT_FAST_RESPONSE | Low filtering, fast response, low CPU cost & low elevation resolution. 2D angle, requires 2 rounds. Most suitable for single shot measurement. |
SL_RTL_AOA_MODE_ONE_SHOT_HIGH_ACCURACY | High filtering, slow response. 2D angle, requires 20 rounds. Most suitable for single shot measurement. |
SL_RTL_AOA_MODE_ONE_SHOT_BASIC_AZIMUTH_ONLY | Equivalent to ONE_SHOT_BASIC with low CPU cost and returns 1D angle. Most suitable for single shot measurement. |
SL_RTL_AOA_MODE_ONE_SHOT_FAST_RESPONSE_AZIMUTH_ONLY | Equivalent to ONE_SHOT_FAST_RESPONSE with low CPU cost, 1D angle. Most suitable for single shot measurement. |
SL_RTL_AOA_MODE_ONE_SHOT_HIGH_ACCURACY_AZIMUTH_ONLY | Equivalent to ONE_SHOT_HIGH_ACCURACY with low CPU cost, 1D angle. Most suitable for single shot measurement. |
SL_RTL_AOA_MODE_REAL_TIME_FAST_RESPONSE | Low filtering, fast response, lowest CPU cost, 2D angle, Most suitable for real-time tracking. |
SL_RTL_AOA_MODE_REAL_TIME_BASIC | Medium filtering, medium response, medium CPU cost, 2D angle, Most suitable for real-time tracking. |
SL_RTL_AOA_MODE_REAL_TIME_HIGH_ACCURACY | High filtering, slow response, highest CPU cost, 2D angle, Most suitable for real-time tracking. |
SL_RTL_AOA_MODE_LAST | Placeholder. |
SL_RTL_AOD_MODE_ONE_SHOT_BASIC | Medium filtering, medium response. Returns 2D angle, requires 10 rounds. Most suitable for single shot measurement. |
SL_RTL_AOD_MODE_ONE_SHOT_BASIC_LIGHTWEIGHT | Medium filtering, medium response, low CPU cost & low elevation resolution. 2D angle, req. 10 rounds. Most suitable for single shot measurement. |
SL_RTL_AOD_MODE_ONE_SHOT_FAST_RESPONSE | Low filtering, fast response, low CPU cost & low elevation resolution. 2D angle, requires 2 rounds. Most suitable for single shot measurement. |
SL_RTL_AOD_MODE_ONE_SHOT_HIGH_ACCURACY | High filtering, slow response. 2D angle, requires 20 rounds. Most suitable for single shot measurement. |
SL_RTL_AOD_MODE_ONE_SHOT_BASIC_AZIMUTH_ONLY | Equivalent to ONE_SHOT_BASIC with low CPU cost and returns 1D angle. Most suitable for single shot measurement. |
SL_RTL_AOD_MODE_ONE_SHOT_FAST_RESPONSE_AZIMUTH_ONLY | Equivalent to ONE_SHOT_FAST_RESPONSE with low CPU cost, 1D angle. Most suitable for single shot measurement. |
SL_RTL_AOD_MODE_ONE_SHOT_HIGH_ACCURACY_AZIMUTH_ONLY | Equivalent to ONE_SHOT_HIGH_ACCURACY with low CPU cost, 1D angle. Most suitable for single shot measurement. |
SL_RTL_AOD_MODE_REAL_TIME_FAST_RESPONSE | Low filtering, fast response, lowest CPU cost, 2D angle, Most suitable for real-time tracking. |
SL_RTL_AOD_MODE_REAL_TIME_BASIC | Medium filtering, medium response, medium CPU cost, 2D angle, Most suitable for real-time tracking. |
SL_RTL_AOD_MODE_REAL_TIME_HIGH_ACCURACY | High filtering, slow response, highest CPU cost, 2D angle, Most suitable for real-time tracking. |
SL_RTL_AOD_MODE_LAST | Placeholder. |
SL_RTL_AOX_MODE_ONE_SHOT_BASIC | Medium filtering, medium response. Returns 2D angle, requires 10 rounds. Most suitable for single shot measurement. |
SL_RTL_AOX_MODE_ONE_SHOT_BASIC_LIGHTWEIGHT | Medium filtering, medium response, low CPU cost & low elevation resolution. 2D angle, req. 10 rounds. Most suitable for single shot measurement. |
SL_RTL_AOX_MODE_ONE_SHOT_FAST_RESPONSE | Low filtering, fast response, low CPU cost & low elevation resolution. 2D angle, requires 2 rounds. Most suitable for single shot measurement. |
SL_RTL_AOX_MODE_ONE_SHOT_HIGH_ACCURACY | High filtering, slow response. 2D angle, requires 20 rounds. Most suitable for single shot measurement. |
SL_RTL_AOX_MODE_ONE_SHOT_BASIC_AZIMUTH_ONLY | Equivalent to ONE_SHOT_BASIC with low CPU cost and returns 1D angle. Most suitable for single shot measurement. |
SL_RTL_AOX_MODE_ONE_SHOT_FAST_RESPONSE_AZIMUTH_ONLY | Equivalent to ONE_SHOT_FAST_RESPONSE with low CPU cost, 1D angle. Most suitable for single shot measurement. |
SL_RTL_AOX_MODE_ONE_SHOT_HIGH_ACCURACY_AZIMUTH_ONLY | Equivalent to ONE_SHOT_HIGH_ACCURACY with low CPU cost, 1D angle. Most suitable for single shot measurement. |
SL_RTL_AOX_MODE_REAL_TIME_FAST_RESPONSE | Low filtering, fast response, lowest CPU cost, 2D angle, Most suitable for real-time tracking. |
SL_RTL_AOX_MODE_REAL_TIME_BASIC | Medium filtering, medium response, medium CPU cost, 2D angle, Most suitable for real-time tracking. |
SL_RTL_AOX_MODE_REAL_TIME_HIGH_ACCURACY | High filtering, slow response, highest CPU cost, 2D angle, Most suitable for real-time tracking. |
SL_RTL_AOX_MODE_LAST | Placeholder. |
122
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_constraint_type#
sl_rtl_aox_constraint_type
Enumerator | |
---|---|
SL_RTL_AOX_CONSTRAINT_TYPE_AZIMUTH | Azimuth constraint in degrees. |
SL_RTL_AOX_CONSTRAINT_TYPE_ELEVATION | Elevation constraint in degrees. |
174
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_switch_pattern_mode#
sl_rtl_aox_switch_pattern_mode
Enumerator | |
---|---|
SL_RTL_AOX_SWITCH_PATTERN_MODE_DEFAULT | Internally defined switch pattern: 0, 1, 2, ..., N-1, where N is the number of antennas. |
SL_RTL_AOX_SWITCH_PATTERN_MODE_RANDOM | Internally defined random switch pattern. |
SL_RTL_AOX_SWITCH_PATTERN_MODE_EXTERNAL | Switch pattern set externally by the user. |
SL_RTL_AOX_SWITCH_PATTERN_MODE_EXTRA_REFERENCE | Switch pattern set externally by the user with extra reference antenna as a first. |
180
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_slib_iq_sample_qa_result_t#
sl_rtl_slib_iq_sample_qa_result_t
Enumerator | |
---|---|
SL_RTL_AOX_IQ_SAMPLE_QA_INVAL_REF | Invalid reference period data. |
SL_RTL_AOX_IQ_SAMPLE_QA_DCOFFSET | DC offset too large. |
SL_RTL_AOX_IQ_SAMPLE_QA_SNDR | Reference period SNDR too large. |
SL_RTL_AOX_IQ_SAMPLE_QA_ROTATING_ERROR | Rotation error too large. |
SL_RTL_AOX_IQ_SAMPLE_QA_REF_ANT_PHASE_VALUE | Reference antenna phase value too big. |
SL_RTL_AOX_IQ_SAMPLE_QA_REF_ANT_PHASE_JITTER | Reference antenna phase jitter too large. |
SL_RTL_AOX_IQ_SAMPLE_QA_ANT_X_PHASE_JITTER | Antenna X phase jitter too large. |
SL_RTL_AOX_IQ_SAMPLE_QA_ALL_SAME_PHASE | All the antennas seen in the same phase. |
SL_RTL_AOX_IQ_SAMPLE_QA_SWICHING_JITTER | Switching jitter too large. |
212
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
Typedef Documentation#
sl_rtl_aox_libitem#
typedef void* sl_rtl_aox_libitem
Angle of Arrival / Departure library item.
188
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_antenna_pattern#
typedef void* sl_rtl_aox_antenna_pattern
Angle of Arrival / Departure antenna array radiation pattern.
670
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
Function Documentation#
sl_rtl_aox_init#
enum sl_rtl_error_code sl_rtl_aox_init (sl_rtl_aox_libitem * item)
[in] | item | Pointer to the libitem to be initialized. |
Initialize the AoX libitem instance.
Returns
SL_RTL_ERROR_SUCCESS if successful
237
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_deinit#
enum sl_rtl_error_code sl_rtl_aox_deinit (sl_rtl_aox_libitem * item)
[in] | item | Pointer to the libitem to be deinitialized. |
Deinitialize a libitem instance of the AoX estimator.
Returns
SL_RTL_ERROR_SUCCESS if successful
245
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_num_snapshots#
enum sl_rtl_error_code sl_rtl_aox_set_num_snapshots (sl_rtl_aox_libitem * item, uint32_t num_snapshots)
[in] | item | Pointer to the initialized AoX libitem. |
[in] | num_snapshots | Number of snapshots as positive integer value. |
Set the number of signal snapshots to be used in the angle estimation.
Returns
SL_RTL_ERROR_SUCCESS if successful
256
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_array_type#
enum sl_rtl_error_code sl_rtl_aox_set_array_type (sl_rtl_aox_libitem * item, enum sl_rtl_aox_array_type array_type)
[in] | item | Pointer to the initialized AoX libitem. |
[in] | array_type | Array type as sl_rtl_aox_array_type. |
Set the array type used with the estimator.
Returns
SL_RTL_ERROR_SUCCESS if successful
Set the array type used with the estimator. For example, the array type should be set to SL_RTL_AOX_ARRAY_TYPE_4x4_URA when using the reference 4x4 URA board.
269
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_mode#
enum sl_rtl_error_code sl_rtl_aox_set_mode (sl_rtl_aox_libitem * item, enum sl_rtl_aox_mode mode)
[in] | item | Pointer to the initialized AoX libitem. |
[in] | mode | Estimator mode as sl_rtl_aox_mode. |
Set the estimation mode.
Returns
SL_RTL_ERROR_SUCCESS if successful
Set the estimation mode. For example, ::SL_RTL_AOX_MODE_BASIC sets medium filtering and estimates both azimuth and elevation. For further description of the modes, see the documentation of sl_rtl_aox_mode.
282
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_calculate_iq_sample_phase_rotation#
enum sl_rtl_error_code sl_rtl_aox_calculate_iq_sample_phase_rotation (sl_rtl_aox_libitem * item, float iq_data_downsampling_factor, float * i_samples, float * q_samples, uint32_t num_samples, float * phase_rotation_out)
[in] | item | Pointer to the initialized AoX libitem. |
[in] | iq_data_downsampling_factor | Ratio between reference period IQ-data sampling rate. and actual IQ-data (i.e., antenna array data) sampling rate. For example, 1e6 / 500e3 = 2.0 |
[in] | i_samples | Float-array of the reference period I samples. |
[in] | q_samples | Float-array of the reference period Q samples. |
[in] | num_samples | Number of samples, or size of the I or Q sample array. |
[out] | phase_rotation_out | Returned phase rotation value as float in degrees. |
Estimate the I/Q-sample phase rotation error in degrees.
Returns
SL_RTL_ERROR_SUCCESS if successful
Estimate the I/Q-sample phase rotation error caused by switching and CTE frequency error based on I/Q samples from the reference period.
300
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_iq_sample_phase_rotation#
enum sl_rtl_error_code sl_rtl_aox_set_iq_sample_phase_rotation (sl_rtl_aox_libitem * item, float phase_rotation)
[in] | item | Pointer to the initialized AoX libitem. |
[in] | phase_rotation | Float value of I/Q sample phase rotation in degrees. |
Set a constant value of I/Q sample phase rotation in degrees.
Returns
SL_RTL_ERROR_SUCCESS if successful
Set a constant value of I/Q sample phase rotation in degrees. The sample rotation can be used to correct the switching and CTE frequency error. Note
: This function should be called only after the estimator is created.
314
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_add_constraint#
enum sl_rtl_error_code sl_rtl_aox_add_constraint (sl_rtl_aox_libitem * item, enum sl_rtl_aox_constraint_type constraint_type, float min_value, float max_value)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | constraint_type | Select which constraints should be added. |
[in] | min_value | Starting (minimum) value of the range including the min_value. |
[in] | max_value | Ending (maximum) value of the range including the max_value. |
Add constraints for the estimator. Call before sl_rtl_aox_create_estimator.
Returns
SL_RTL_ERROR_SUCCESS if successful
For example, constraint for SL_RTL_AOX_CONSTRAINT_TYPE_AZIMUTH with min_value = 0 and max_value = 90 means that the angular range 0 to 90 degrees is excluded from the estimators internal processing range and angle estimated between that range are not considered as valid results. Setting constraints will help ruling out false multipath-detections when the locator is installed nearby a wall or a RF-reflective surface. Note
: This function must called before the estimator is created.
333
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_sample_rate#
enum sl_rtl_error_code sl_rtl_aox_set_sample_rate (sl_rtl_aox_libitem * item, float sampleRate)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | sampleRate | The new sample rate. |
Configure the IQ sampling sample rate for the library.
Returns
SL_RTL_ERROR_SUCCESS if successful
342
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_num_radio_channels#
enum sl_rtl_error_code sl_rtl_aox_set_num_radio_channels (sl_rtl_aox_libitem * item, uint32_t channels)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | channels | The new number of radio channels. |
Configure the number of radio channels.
Returns
SL_RTL_ERROR_SUCCESS if successful
351
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_iq_sample_qa_configure#
enum sl_rtl_error_code sl_rtl_aox_iq_sample_qa_configure (sl_rtl_aox_libitem * item)
[in] | item | Pointer to the initialized and configured AoX libitem. |
Configure the IQ sample quality analysis.
Returns
SL_RTL_ERROR_SUCCESS if successful
This function turns the IQ sample quality analysis, which is not done by default.
362
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_iq_sample_qa_get_results#
uint32_t sl_rtl_aox_iq_sample_qa_get_results (sl_rtl_aox_libitem * item)
[in] | item | Pointer to the initialized and configured AoX libitem. |
Get the IQ sample quality analysis overall results.
Returns
bitmask of found problems, zero indicates that everything is OK
370
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_iq_sample_qa_get_details#
enum sl_rtl_error_code sl_rtl_aox_iq_sample_qa_get_details (sl_rtl_aox_libitem * item, sl_rtl_clib_iq_sample_qa_dataset_t * results, sl_rtl_clib_iq_sample_qa_antenna_data_t * antenna_data)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[out] | results | The data structure with data related to the latest data packet. |
[out] | antenna_data | The array of antenna-specific results. |
Get the IQ sample quality analysis detailed results for the latest packet.
Returns
SL_RTL_ERROR_SUCCESS if successful
Fetch the results for the latest packet.
382
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_iq_sample_qa_get_channel_details#
enum sl_rtl_error_code sl_rtl_aox_iq_sample_qa_get_channel_details (sl_rtl_aox_libitem * item, uint8_t channel, sl_rtl_clib_iq_sample_qa_dataset_t * results, sl_rtl_clib_iq_sample_qa_antenna_data_t * antenna_data)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | channel | Radio channel to show results for. |
[out] | results | The data structure with data related to the last data packet using the requested channel. |
[out] | antenna_data | The array of antenna-specific results |
Get the IQ sample quality analysis detailed results for the requested radio channel.
Returns
SL_RTL_ERROR_SUCCESS if successful
Fetch the latest results for the given radio channel, which may be other than the latest packet received.
396
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_create_estimator#
enum sl_rtl_error_code sl_rtl_aox_create_estimator (sl_rtl_aox_libitem * item)
[in] | item | Pointer to the initialized and configured AoX libitem. |
Create the estimator after initializing the libitem and setting parameters.
Returns
SL_RTL_ERROR_SUCCESS if successful
404
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_convert_raw_samples#
enum sl_rtl_error_code sl_rtl_aox_convert_raw_samples (sl_rtl_aox_libitem * item, uint32_t start_offset, float iq_data_downsampling_factor, float * raw_i_samples_in, float * raw_q_samples_in, uint32_t num_raw_samples_in, float ** i_samples_out, float ** q_samples_out, uint32_t num_snapshots_out)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | start_offset | The start offset in the buffer (for example, for skipping a reference period). |
[in] | iq_data_downsampling_factor | Ratio between chip IQ-data sampling rate and downsampled rate. For example, 4.8e6 / 500e3 = 9.6 |
[in] | raw_i_samples_in | I-part sample buffer input |
[in] | raw_q_samples_in | Q-part sample buffer input |
[in] | num_raw_samples_in | Number of IQ-sample pairs in the input buffers. |
[out] | i_samples_out | Buffer for the processed I-samples. Must be allocated by the user. Indexing: i_samples_out[snapshot][antenna] |
[out] | q_samples_out | Buffer for the processed Q-samples. Must be allocated by the user. Indexing: q_samples_out[snapshot][antenna] |
[in] | num_snapshots_out | Number of snapshots allocated in the output buffers. This function checks if the given number of snapshots and calculated snapshots based on the length of RAW-data match |
Convert data in RAW IQ-data buffers to downsampled IQ-data buffers.
Returns
SL_RTL_ERROR_SUCCESS if successful
424
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_calculate_number_of_snapshots#
enum sl_rtl_error_code sl_rtl_aox_calculate_number_of_snapshots (sl_rtl_aox_libitem * item, uint32_t num_raw_samples_in, uint32_t start_offset, float iq_data_downsampling_factor, uint32_t num_channels, uint32_t * num_snapshots_out)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | num_raw_samples_in | Total number of RAW IQ-sample pairs. |
[in] | start_offset | The start offset in the buffer, for example, for skipping a reference period. |
[in] | iq_data_downsampling_factor | Ratio between chip IQ-data sampling rate and downsampled rate. For example, 4.8e6 / 500e3 = 9.6. |
[in] | num_channels | Number of channels in the RAW data |
[out] | num_snapshots_out | Calculated number of snapshots based on the input. |
Calculate the number of downsampled snapshots in a RAW IQ-data buffer. Use this function to get the number of snapshots to allocate the i_samples and q_samples buffers for the process-function.
Returns
SL_RTL_ERROR_SUCCESS if successful
439
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_switch_pattern_mode#
enum sl_rtl_error_code sl_rtl_aox_set_switch_pattern_mode (sl_rtl_aox_libitem * item, enum sl_rtl_aox_switch_pattern_mode mode)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | mode | Required mode. |
Set switch pattern mode. Sets internal mode used by the library. See enum sl_rtl_aox_switch_pattern_mode for detailed description of the modes. If this function isn't called, a default switch pattern of: 0, 1, 2, 3, ..., N-1 will be used, where N is the number of antennas. Call this function at run-time after initializing and creating the estimator.
Returns
SL_RTL_ERROR_SUCCESS if successful
451
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_update_switch_pattern#
enum sl_rtl_error_code sl_rtl_aox_update_switch_pattern (sl_rtl_aox_libitem * item, uint32_t * switch_pattern_in, uint32_t ** switch_pattern_out)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | switch_pattern_in | Pointer to the switch pattern array. The pointer must point to a valid switch pattern when SL_RTL_AOX_SWITCH_PATTERN_MODE_EXTERNAL is used. |
[out] | switch_pattern_out | Pointer to the user defined uint32_t* variable. This pointer must be non-zero when using internally defined switch pattern modes, otherwise can be zero. |
Update switch pattern, which is used by the estimator algorithm. This function must be called before calling the function sl_rtl_aox_process. Call this function at run-time after initializing and creating the estimator.
When using a custom pattern in SL_RTL_AOX_SWITCH_PATTERN_MODE_EXTERNAL mode, the pattern in switch_pattern_in must not contain duplicate elements and the antenna indices must be within the range 0 to (number_of_antennas - 1). Number_of_antennas is the amount of antennas in the set array type, for example for the 4x4 URA this is 16 and for the 1x4 ULA this is 4. The length of the switching pattern must be equal to number_of_antennas.
Note: The RF switch pattern indices may be different to the indices required by the RTL algorithm. For example, a 1x4 ULA might use RF controls [12, 13, 14, 15] for switching the antennas 1-4, but the RTL algorithm requires the switch pattern [0, 1, 2, 3]. If the RF controls are switched as [14, 15, 13, 12], the RTL algorithm requires the pattern [2, 3, 1, 0].
Returns
SL_RTL_ERROR_SUCCESS if successful
478
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_switch_pattern_seed#
enum sl_rtl_error_code sl_rtl_aox_set_switch_pattern_seed (sl_rtl_aox_libitem * item, int32_t seed_value)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | seed_value | The seed value to be used. |
Set the random seed for the switch pattern, which is used for the random pattern mode. Call this function at run-time after initializing and creating the estimator.
Returns
SL_RTL_ERROR_SUCCESS if successful
488
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_convert_switch_pattern#
enum sl_rtl_error_code sl_rtl_aox_convert_switch_pattern (sl_rtl_aox_libitem * item, uint32_t array_id, uint32_t options, uint32_t switch_pattern_size_in, uint32_t * switch_pattern_in, uint32_t * switch_pattern_size_out, uint32_t ** switch_pattern_out)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | array_id | Array ID, see sl_rtl_aox_switch_pattern_array, for example SL_RTL_AOX_SWITCH_PATTERN_ARRAY_4x4_DP |
[in] | options | Switch pattern options, see sl_rtl_aox_switch_pattern_options. Can be used to set for example dual polarization (default is single polarization). |
[in] | switch_pattern_size_in | The length of the input switching pattern. |
[in] | switch_pattern_in | The input switching pattern. |
[out] | switch_pattern_size_out | The outputted length of the converted switching pattern. |
[out] | switch_pattern_out | The outputted switching pattern. |
Convert switching pattern from antenna indices to antenna switching pin control logic. Call this function at run-time after initializing and creating the estimator.
Returns
SL_RTL_ERROR_SUCCESS if successful
SL_RTL_ERROR_SUCCESS if successful
506
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_reset_estimator#
enum sl_rtl_error_code sl_rtl_aox_reset_estimator (sl_rtl_aox_libitem * item)
[in] | item | Pointer to the initialized and configured AoX libitem. |
Reset estimator state. Calling this function causes the selected aox-mode to start from its initial state. Call this function at run-time after initializing and creating the estimator.
Returns
SL_RTL_ERROR_SUCCESS if successful
515
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_process#
enum sl_rtl_error_code sl_rtl_aox_process (sl_rtl_aox_libitem * item, float ** i_samples, float ** q_samples, float tone_frequency, float * az_out, float * el_out)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | i_samples | Two-dimensional float-array of captured I samples as i_samples[snapshot][antenna]. |
[in] | q_samples | Two-dimensional float-array of captured Q samples as q_samples[snapshot][antenna], corresponding to the I samples array. |
[in] | tone_frequency | The frequency of the signal from which the I/Q data was captured from as float (e.g., 2.46e9f). |
[out] | az_out | Output azimuth angle. |
[out] | el_out | Output elevation angle. |
Calculate the angle estimate.
Returns
SL_RTL_ERROR_SUCCESS if successful and SL_RTL_ERROR_ESTIMATION_IN_PROGRESS if estimate is not yet final and more I/Q data needs to be processed.
Calculate the angle estimate from the given I/Q samples captured at the given frequency. Call this function with new I/Q data as many times as indicated by the sl_rtl_aox_mode used by the estimator before the final estimate is output.
538
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_get_latest_aox_standard_deviation#
enum sl_rtl_error_code sl_rtl_aox_get_latest_aox_standard_deviation (sl_rtl_aox_libitem * item, float * az_std_dev, float * el_std_dev)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[out] | az_std_dev | Pointer for getting standard deviation of the latest azimuth estimate. |
[out] | el_std_dev | Pointer for getting standard deviation of the latest elevation estimate. |
Get the standard deviation for the latest AoA/AoD-estimate.
Returns
SL_RTL_ERROR_SUCCESS if successful
Call this function after sl_rtl_aox_process to fetch standard deviation for the latest AoA/AoD-estimate. Positive standard deviations indicate line-of-sight detection and negative values indicate likely non-line-of-sight detection.
555
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_get_latest_aoa_standard_deviation#
static enum sl_rtl_error_code sl_rtl_aox_get_latest_aoa_standard_deviation (sl_rtl_aox_libitem * item, float * az_std_dev, float * el_std_dev)
N/A | item | |
N/A | az_std_dev | |
N/A | el_std_dev |
Kept for backward compatibility
560
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_get_latest_aod_standard_deviation#
static enum sl_rtl_error_code sl_rtl_aox_get_latest_aod_standard_deviation (sl_rtl_aox_libitem * item, float * az_std_dev, float * el_std_dev)
N/A | item | |
N/A | az_std_dev | |
N/A | el_std_dev |
Kept for backward compatibility
568
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_expected_direction#
enum sl_rtl_error_code sl_rtl_aox_set_expected_direction (sl_rtl_aox_libitem * item, float expected_az, float expected_el)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | expected_az | Expected azimuth angle calculated by position algorithm. |
[in] | expected_el | Expected elevation angle calculated by position algorithm. |
Feed the expected angles back to the locator.
Returns
SL_RTL_ERROR_SUCCESS if successful
The position algorithm has a more complete view of the asset's location. The direction it should be found can be calculated back and fed to the locator, so that it can recover faster when, for example, it has locked to a reflection rather than to the line of sight signal. See also sl_rtl_loc_get_expected_direction().
587
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_expected_deviation#
enum sl_rtl_error_code sl_rtl_aox_set_expected_deviation (sl_rtl_aox_libitem * item, float deviation_az, float deviation_el)
[in] | item | Pointer to the initialized and configured AoX libitem. |
[in] | deviation_az | Deviation of the expected azimuth angle calculated by position algorithm. |
[in] | deviation_el | Deviation of the expected elevation angle calculated by position algorithm. |
Feed the expected angle deviations back to the locator.
Returns
SL_RTL_ERROR_SUCCESS if successful
Report expected deviations calculated by the position algorithm back to the locator so that angles are calculated more accurately taking in account the correctness of the expected directions. If sl_rtl_aox_set_expected_direction() is called but this function is not called, the algorithm will use default values for the expected deviations. See also sl_rtl_loc_get_expected_deviation() and sl_rtl_aox_set_expected_direction().
604
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_clear_expected_direction#
enum sl_rtl_error_code sl_rtl_aox_clear_expected_direction (sl_rtl_aox_libitem * item)
[in] | item | Pointer to the initialized and configured AoX libitem. |
Clear the expected directions and deviations from the locator.
Returns
SL_RTL_ERROR_SUCCESS if successful
See also sl_rtl_aox_set_expected_direction() and sl_rtl_aox_set_expected_deviation().
614
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_enable_spectrum#
enum sl_rtl_error_code sl_rtl_aox_enable_spectrum (sl_rtl_aox_libitem * item, bool enable)
[in] | item | Pointer to the initialized libitem. |
[in] | enable | Set to true to enable outputting the pseudospectrum. |
Enable or disable outputting the pseudospectrum. This function should be called before creating the estimator.
Returns
SL_RTL_ERROR_SUCCESS if successful
624
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_get_spectrum_size#
enum sl_rtl_error_code sl_rtl_aox_get_spectrum_size (sl_rtl_aox_libitem * item, uint32_t * rows, uint32_t * cols)
[in] | item | Pointer to the initialized libitem. |
[out] | rows | Number of rows in the pseudospectrum data array. |
[out] | cols | Number of columns in the pseudospecutrm data array. |
Get the size of the pseudospectrum. This function should be called after calling the AoX process function.
Returns
SL_RTL_ERROR_SUCCESS if successful
635
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_get_polarization_spectrum_size#
enum sl_rtl_error_code sl_rtl_aox_get_polarization_spectrum_size (sl_rtl_aox_libitem * item, uint32_t * rows, uint32_t * cols)
[in] | item | Pointer to the initialized libitem. |
[out] | rows | Number of rows in the polarization pseudospectrum data array. |
[out] | cols | Number of columns in the pseudospecutrm data array. |
Get the size of the polarization pseudospectrum. This function should be called after calling the AoX process function.
Returns
SL_RTL_ERROR_SUCCESS if successful
647
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_get_spectrum#
enum sl_rtl_error_code sl_rtl_aox_get_spectrum (sl_rtl_aox_libitem * item, float ** spectrum_out)
[in] | item | Pointer to the initialized libitem. |
[out] | spectrum_out | Outputted pseudospectrum. |
Get the pseudospectrum. Memory for the output spectrum must be allocated by the user, the size of the rows and columns are given by sl_rtl_aox_get_spectrum_size().
Returns
SL_RTL_ERROR_SUCCESS if successful
657
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_get_polarization_spectrum#
enum sl_rtl_error_code sl_rtl_aox_get_polarization_spectrum (sl_rtl_aox_libitem * item, float ** spectrum_out)
[in] | item | Pointer to the initialized libitem. |
[out] | spectrum_out | Outputted polarization pseudospectrum. |
Get the polarization spectrum. Memory for the output spectrum must be allocated by the user, the size of the rows and columns are given by sl_rtl_aox_get_polarization_spectrum_size().
Returns
SL_RTL_ERROR_SUCCESS if successful
667
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_antenna_pattern_init#
enum sl_rtl_error_code sl_rtl_aox_antenna_pattern_init (sl_rtl_aox_antenna_pattern * pattern, enum sl_rtl_aox_array_type array_type)
[in] | pattern | Pointer to the pattern item to initialize. |
[in] | array_type | Array type of the board for which the pattern is loaded. |
Initialize the antenna radiation pattern item for the given array board. The antenna pattern item can be shared by multiple different estimators.
Returns
SL_RTL_ERROR_SUCCESS if successful
680
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_set_antenna_pattern#
enum sl_rtl_error_code sl_rtl_aox_set_antenna_pattern (sl_rtl_aox_libitem * item, sl_rtl_aox_antenna_pattern * pattern)
[in] | item | Pointer to the initialized libitem. |
[in] | pattern | Pointer to the initialized antenna pattern item. |
Set the given estimator to use the given antenna radiation pattern in the model. The same antenna pattern can be shared between multiple estimators. The antenna pattern can be cleared for an estimator by setting it to NULL. The estimator will then use the default model. Note
: This function should be called only after the estimator is created.
Returns
SL_RTL_ERROR_SUCCESS if successful
694
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
sl_rtl_aox_antenna_pattern_deinit#
enum sl_rtl_error_code sl_rtl_aox_antenna_pattern_deinit (sl_rtl_aox_antenna_pattern * pattern)
[in] | pattern | Pointer to the initialized pattern item. |
Deinitialize the antenna radiation pattern item.
Returns
SL_RTL_ERROR_SUCCESS if successful
702
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
Macro Definition Documentation#
SL_RTL_AOX_IQ_SAMPLE_QA_ALL_OK#
#define SL_RTL_AOX_IQ_SAMPLE_QA_ALL_OKValue:
0
210
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
SL_RTL_AOX_IQ_SAMPLE_QA_FAILURE#
#define SL_RTL_AOX_IQ_SAMPLE_QA_FAILUREValue:
0xffffffff
211
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
SL_RTL_AOX_IQ_SAMPLE_QA_CLEAR_BIT#
#define SL_RTL_AOX_IQ_SAMPLE_QA_CLEAR_BITValue:
(code, bit)
224
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
SL_RTL_AOX_IQ_SAMPLE_QA_SET_BIT#
#define SL_RTL_AOX_IQ_SAMPLE_QA_SET_BITValue:
(code, bit)
226
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h
SL_RTL_AOX_IQ_SAMPLE_QA_IS_SET#
#define SL_RTL_AOX_IQ_SAMPLE_QA_IS_SETValue:
(code, bit)
228
of file /mnt/raid/workspaces/ws.pYEvgD5Jt/overlay/gsdk/util/silicon_labs/aox/inc/sl_rtl_clib_api.h