Radio#
Functions#
Get the maximum Wi-Fi transmit power.
Set the maximum Wi-Fi transmit power.
Set the Wi-Fi antenna for an interface.
Get the Wi-Fi antenna for an interface.
Get the current channel for the given Wi-Fi interface.
Set the channel for the given Wi-Fi Access Point interface.
Set the Wi-Fi transmit rate for the given 802.11 protocol on the specified Wi-Fi interface.
Get the Wi-Fi transmit rate for the given 802.11 protocol on the specified Wi-Fi interface.
Set the Wi-Fi client interface listen interval.
Set the Wi-Fi client interface listen interval and listen interval multiplier.
Get the Wi-Fi client listen interval.
Get the Wi-Fi client listen interval and listen interval multiplier.
Assign the user configurable channel gain table entries in different regions to the module from the user.
Assign the user configurable channel gain table entries in different regions to the module from the user including 11ax SU and 11ax TB.
Configure the 11ax params.
Start the transmit test.
Stop the transmit test.
Provide feedback of frequency error in KHz.
Update Flash/EFuse DPD data.
Function Documentation#
sl_wifi_get_max_tx_power#
sl_status_t sl_wifi_get_max_tx_power (sl_wifi_interface_t interface, sl_wifi_max_tx_power_t * max_tx_power)
Get the maximum Wi-Fi transmit power.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_max_tx_power_t * | [out] | max_tx_power | A variable that contains current maximum transmit power as identified by by sl_wifi_max_tx_power_t. |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
Note
This function gets the transmit power for a particular radio interface: SL_WIFI_2_4GHZ_INTERFACE.
sl_wifi_set_max_tx_power#
sl_status_t sl_wifi_set_max_tx_power (sl_wifi_interface_t interface, sl_wifi_max_tx_power_t max_tx_power)
Set the maximum Wi-Fi transmit power.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_max_tx_power_t | [in] | max_tx_power | Max transmission power as identified by sl_wifi_max_tx_power_t |
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
Note
This function sets the transmit power for a particular radio interface: SL_WIFI_2_4GHZ_INTERFACE. Eg: Setting transmit power for client interface at 2.4 GHz will also set transmit power of the AP interface at 2.4 GHz.
The effective transmit power is subject to regional and device limitations. If the specified transmit power exceeds the maximum supported value for that region, the transmission occurs at the maximum supported transmit power.
sl_wifi_set_antenna#
sl_status_t sl_wifi_set_antenna (sl_wifi_interface_t interface, sl_wifi_antenna_t antenna)
Set the Wi-Fi antenna for an interface.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_antenna_t | [in] | antenna | Antenna to select as identified by sl_wifi_antenna_t |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
sl_wifi_get_antenna#
sl_status_t sl_wifi_get_antenna (sl_wifi_interface_t interface, sl_wifi_antenna_t * antenna)
Get the Wi-Fi antenna for an interface.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_antenna_t * | [out] | antenna | sl_wifi_antenna_t object that contains current antenna selection. |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
sl_wifi_get_channel#
sl_status_t sl_wifi_get_channel (sl_wifi_interface_t interface, sl_wifi_channel_t * channel)
Get the current channel for the given Wi-Fi interface.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_channel_t * | [out] | channel | sl_wifi_channel_t object that contains current channel information. |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
sl_wifi_set_channel#
sl_status_t sl_wifi_set_channel (sl_wifi_interface_t interface, sl_wifi_channel_t channel)
Set the channel for the given Wi-Fi Access Point interface.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_channel_t | [in] | channel | Channel as identified by sl_wifi_channel_t |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
sl_wifi_set_transmit_rate#
sl_status_t sl_wifi_set_transmit_rate (sl_wifi_interface_t interface, sl_wifi_rate_protocol_t rate_protocol, sl_wifi_rate_t mask)
Set the Wi-Fi transmit rate for the given 802.11 protocol on the specified Wi-Fi interface.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_rate_protocol_t | [in] | rate_protocol | 802.11 protocol as identified by sl_wifi_rate_protocol_t |
sl_wifi_rate_t | [in] | mask | Data rate as identified by sl_wifi_rate_t |
Pre-conditions:
sl_wifi_init should be called before this API.
In AP mode, this API should be called before sl_net_wifi_ap_up. This configured data rate is passed as part of the AP configuration while bringing up the AP interface.
In Wi-Fi client mode, this API should be called after sl_wifi_connect.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
Note
Only 1 and 2 Mbps rates are allowed in channel 14.
sl_wifi_get_transmit_rate#
sl_status_t sl_wifi_get_transmit_rate (sl_wifi_interface_t interface, sl_wifi_rate_protocol_t * rate_protocol, sl_wifi_rate_t * mask)
Get the Wi-Fi transmit rate for the given 802.11 protocol on the specified Wi-Fi interface.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_rate_protocol_t * | [out] | rate_protocol | 802.11 protocol as identified by sl_wifi_rate_protocol_t |
sl_wifi_rate_t * | [out] | mask | Data rate as identified by sl_wifi_rate_t |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
sl_wifi_set_listen_interval#
sl_status_t sl_wifi_set_listen_interval (sl_wifi_interface_t interface, sl_wifi_listen_interval_t listen_interval)
Set the Wi-Fi client interface listen interval.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_listen_interval_t | [in] | listen_interval | sl_wifi_listen_interval_t object |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
Note
By default listen interval is set 1000 millisecs. User can call this API to overwrite the value.
Moving forward, this API will be deprecated. Instead, use the sl_wifi_set_listen_interval_v2 API. This is retained for backward compatibility. Si91X implementation allows this API ONLY to be called before calling sl_wifi_connect(), sl_wifi_start_ap(), sl_wifi_start_wps()
sl_wifi_set_listen_interval_v2#
sl_status_t sl_wifi_set_listen_interval_v2 (sl_wifi_interface_t interface, sl_wifi_listen_interval_v2_t listen_interval)
Set the Wi-Fi client interface listen interval and listen interval multiplier.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_listen_interval_v2_t | [in] | listen_interval | sl_wifi_listen_interval_v2_t object |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
Note
By default listen interval is set 1000 millisecs and listen interval multiplier is set to 1. User can call this API to overwrite the values for listen interval and listen interval multiplier. Recommended max value for listen_interval_multiplier is 10. Higher value may cause interop issues. Si91X implementation allows this API ONLY to be called before calling sl_wifi_connect(), sl_wifi_start_ap(), sl_wifi_start_wps()
sl_wifi_get_listen_interval#
sl_status_t sl_wifi_get_listen_interval (sl_wifi_interface_t interface, sl_wifi_listen_interval_t * listen_interval)
Get the Wi-Fi client listen interval.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_listen_interval_t * | [out] | listen_interval | sl_wifi_listen_interval_t object that contains the current listen interval. |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
Note
By default, the listen interval is set to 1000 millisecs.
Moving forward, this API will be deprecated. Instead, use the sl_wifi_get_listen_interval_v2 API. This is retained for backward compatibility.
sl_wifi_get_listen_interval_v2#
sl_status_t sl_wifi_get_listen_interval_v2 (sl_wifi_interface_t interface, sl_wifi_listen_interval_v2_t * listen_interval)
Get the Wi-Fi client listen interval and listen interval multiplier.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
sl_wifi_listen_interval_v2_t * | [out] | listen_interval | sl_wifi_listen_interval_v2_t object that contains the current listen interval and listen interval multiplier. |
Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
Note
By default, the listen interval is set to 1000 millisecs and listen interval multiplier is set to 1.
sl_wifi_update_gain_table#
sl_status_t sl_wifi_update_gain_table (uint8_t band, uint8_t bandwidth, const uint8_t * payload, uint16_t payload_length)
Assign the user configurable channel gain table entries in different regions to the module from the user.
Type | Direction | Argument Name | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
uint8_t | [in] | band | 1 - 2.4 GHz | ||||||||||
uint8_t | [in] | bandwidth | 0 - 20 MHz | ||||||||||
const uint8_t * | [in] | payload | Pass channel gain table entries for different regions in a given array format. The gain array format is as follows:
Repeat the above format for all regions codes. | ||||||||||
uint16_t | [in] | payload_length | Max payload length (table size) in 2.4 GHz is 128 bytes. |
This function overwrites the default gain tables present in the firmware. Customers can load gain tables for 2.4 GHz-20 MHz. This is a blocking API.
Returns
sl_status_t. See Status Codes and Additional Status Codes for details..
Pre-conditions: sl_wifi_init should be called before this API.
Note
This API will be deprecated in further releases. Suggested to use updated API sl_wifi_update_su_gain_table for better gain table entries in 11ax SU operation.
This frame must be used only by customers who have done FCC/ETSI/TELEC/KCC certification with their own antenna. Silicon Labs is not liable for inappropriate usage of this frame that may result in violation of FCC/ETSI/TELEC/KCC or any certifications.
Internally, firmware maintains two tables: Worldwide table, and Region-based table. Worldwide table is populated by the firmware with maximum power values that the chip can transmit and meet target specs like EVM. Region-based table has a default gain value set.
When certifying with a user antenna, the Region has to be set to Worldwide and sweep the power from 0 to 21 dBm. Arrive at a max power level that will pass certifications, especially band-edge.
The FCC/ETSI/TELEC/KCC maximum power level should be loaded in an end-to-end mode via WLAN User Gain table. This has to be called done for every boot-up as this information is not saved inside the flash. Region-based user gain table sent by the application is copied onto the Region-based table. SoC uses this table in FCC/ETSI/TELEC/KCC to limit the power and to not violate the allowed limits.
For the Worldwide region, the firmware uses the Worldwide table for Tx. For other regions (FCC/ETSI/TELEC/KCC), the firmware uses the min value out of the Worldwide & Region-based table for Tx. Also, there will be part to part variation across the chips. Offsets that are estimated during the flow of manufacture will be applied as correction factor during normal mode of operation.
In the 2.4 GHz band, 40 MHz is not supported.
Executing this API overwrites calibration values in certified modules.
In FCC-certified modules, this API triggers an error SL_STATUS_SI91X_FEATURE_NOT_AVAILABLE if used, except when in SL_SI91X_TRANSMIT_TEST_MODE mode.
Below are the default gain tables:
Si917 IC OPNs:
Number of regions: 4Region
Number of channels
Channel
11b
11g
11n
11ax
FCC
0xB
1
33
24
21
20
2
34
28
28
24
3
40
30
32
30
4
40
33
36
31
5
40
35
36
32
6
40
35
36
31
7
40
34
36
30
8
38
32
36
32
9
38
34
34
28
10
34
30
30
22
11
34
24
22
20
ETSI
0x11
255
36
36
36
24
TELEC
0x24
2
34
28
32
24
10
34
36
36
24
13
34
26
24
24
14
36
0
0
0
KCC
0x11
255
36
36
36
36
Si917 ACx OPNs:
Number of regions: 6Region
Number of channels
Channel
11b
11g
11n
11ax
FCC
0x29
1
30
20
20
18
2
36
26
26
22
3
40
30
30
26
4
40
36
36
32
7
40
40
40
36
8
40
36
34
36
9
40
34
32
28
10
36
30
28
20
11
30
20
18
16
ETSI
0x11
255
24
28
28
14
TELEC
0x24
1
28
28
26
16
12
28
36
36
16
13
28
26
26
16
14
28
0
0
0
KCC
0x11
255
36
36
36
36
WORLDSAFE
0x24
1
24
20
20
14
2
24
26
26
14
10
24
28
28
14
11
24
20
18
14
SRRC
0x24
1
26
20
20
14
2
26
26
26
14
10
26
30
30
14
13
26
20
20
14
sl_wifi_update_su_gain_table#
sl_status_t sl_wifi_update_su_gain_table (uint8_t band, uint8_t bandwidth, const uint8_t * payload, uint16_t payload_length, uint8_t x_offset, uint8_t y_offset)
Assign the user configurable channel gain table entries in different regions to the module from the user including 11ax SU and 11ax TB.
Type | Direction | Argument Name | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
uint8_t | [in] | band | 1 - 2.4 GHz | ||||||||||||
uint8_t | [in] | bandwidth | 0 - 20 MHz | ||||||||||||
const uint8_t * | [in] | payload | Pass channel gain table entries for different regions in a given array format. The gain array format is as follows:
Repeat the above format for all regions codes. This table contains the separate gain table entries for 11ax SU and TB | ||||||||||||
uint16_t | [in] | payload_length | Max payload length (table size) in 2.4 GHz is 160 bytes. | ||||||||||||
uint8_t | [in] | x_offset | Bump up offset for 11ax 56 tone RU | ||||||||||||
uint8_t | [in] | y_offset | Bump up offset for 11ax 106 tone RU |
This function overwrites the default gain tables present in the firmware. Customers can load gain tables for 2.4 GHz-20 MHz. This is a blocking API.
Returns
sl_status_t. See Status Codes and Additional Status Codes for details.
Pre-conditions: sl_wifi_init should be called before this API.
Note
This frame must be used only by customers who have done FCC/ETSI/TELEC/KCC certification with their own antenna. Silicon Labs is not liable for inappropriate usage of this frame that may result in violation of FCC/ETSI/TELEC/KCC or any certifications.
Internally, firmware maintains two tables: Worldwide table, and Region-based table. Worldwide table is populated by the firmware with maximum power values that the chip can transmit and meet target specs like EVM. Region-based table has a default gain value set.
When certifying with a user antenna, the Region has to be set to Worldwide and sweep the power from 0 to 21 dBm. Arrive at a max power level that will pass certifications, especially band-edge.
The FCC/ETSI/TELEC/KCC maximum power level should be loaded in an end-to-end mode via WLAN User Gain table. This has to be called done for every boot-up as this information is not saved inside the flash. Region-based user gain table sent by the application is copied onto the Region-based table. SoC uses this table in FCC/ETSI/TELEC/KCC to limit the power and to not violate the allowed limits.
For the Worldwide region, the firmware uses the Worldwide table for Tx. For other regions (FCC/ETSI/TELEC/KCC), the firmware uses the min value out of the Worldwide & Region-based table for Tx. Also, there will be part to part variation across the chips. Offsets that are estimated during the flow of manufacture will be applied as correction factor during normal mode of operation.
In the 2.4 GHz band, 40 MHz is not supported.
Executing this API overwrites calibration values in certified modules.
In FCC-certified modules, this API triggers an error SL_STATUS_SI91X_FEATURE_NOT_AVAILABLE if used, except when in SL_SI91X_TRANSMIT_TEST_MODE mode.
sl_wifi_set_11ax_config#
sl_status_t sl_wifi_set_11ax_config (uint8_t guard_interval)
Configure the 11ax params.
Type | Direction | Argument Name | Description |
---|---|---|---|
uint8_t | [in] | guard_interval | Period of time delta between two packets in wireless transmission. Valid values : 0 - 3 (0 = 8 us, 1 = 16 us, 2 = 32 us, 3 = 64 us). |
This is a blocking API.
Pre-conditions:
This API should be called before sl_wifi_connect
Returns
sl_status_t. See https://docs.silabs.com/gecko-platform/latest/platform-common/status for details.
sl_wifi_transmit_test_start#
sl_status_t sl_wifi_transmit_test_start (sl_wifi_interface_t interface, const sl_wifi_transmitter_test_info_t * tx_test_info)
Start the transmit test.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
const sl_wifi_transmitter_test_info_t * | [in] | tx_test_info | Pointer to sl_wifi_transmitter_test_info_t structure containing the configuration for the transmit test. |
This function starts the transmit test using the provided configuration.
This is a blocking API.
This API is relevant in PER mode
-Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See [Status Codes] (https://docs.silabs.com/gecko-platform/latest/platform-common/status) and [Additional Status Codes] (../wiseconnect-api-reference-guide-err-codes/sl-additional-status-errors) for details.
Note
Before starting Continuous Wave mode, user must start Continuous mode with power and channel values that are intended to be used in Continuous Wave mode i.e.
Start Continuous mode with intended power value and channel values - Pass any valid values for rate and length.
Stop Continuous mode
Start Continuous Wave mode
If user wants to switch continuous wave mode, first need to stop the per mode and again need to give continuous wave mode which user wants to switch.
sl_wifi_transmit_test_stop#
sl_status_t sl_wifi_transmit_test_stop (sl_wifi_interface_t interface)
Stop the transmit test.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
This function stops the ongoing transmit test on the Si91x device.
This is a blocking API.
This API is relevant in PER mode.
-Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See [Status Codes] (https://docs.silabs.com/gecko-platform/latest/platform-common/status) and [Additional Status Codes] (../wiseconnect-api-reference-guide-err-codes/sl-additional-status-errors) for details.
Note
User should configure a minimum delay (approx. 10 milliseconds) before and after sl_wifi_transmit_test_start API to observe a stable output at requested dBm level.
sl_wifi_frequency_offset#
sl_status_t sl_wifi_frequency_offset (sl_wifi_interface_t interface, const sl_wifi_freq_offset_t * frequency_calibration)
Provide feedback of frequency error in KHz.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
const sl_wifi_freq_offset_t * | [in] | frequency_calibration | Pointer to sl_wifi_freq_offset_t structure containing the frequency error in KHz. |
This function provides feedback of the frequency error in KHz. The frequency error is specified using the sl_wifi_freq_offset_t
structure.
This is a blocking API.
-Pre-conditions:
sl_wifi_init should be called before this API.
Returns
sl_status_t. See [Status Codes] (https://docs.silabs.com/gecko-platform/latest/platform-common/status) and [Additional Status Codes] (../wiseconnect-api-reference-guide-err-codes/sl-additional-status-errors) for details.
sl_wifi_dpd_calibration#
sl_status_t sl_wifi_dpd_calibration (sl_wifi_interface_t interface, const sl_wifi_dpd_calib_data_t * dpd_calib_data)
Update Flash/EFuse DPD data.
Type | Direction | Argument Name | Description |
---|---|---|---|
sl_wifi_interface_t | [in] | interface | Wi-Fi interface as identified by sl_wifi_interface_t |
const sl_wifi_dpd_calib_data_t * | [in] | dpd_calib_data | Pointer to sl_wifi_dpd_calib_data_t structure containing the DPD calibration data. |
This function updates the Flash/EFuse DPD (Digital Pre-Distortion) data using the provided DPD calibration data.
This is a blocking API.
-Pre-conditions:
sl_wifi_init and sl_wifi_transmit_test_start should be called before this API.
Returns
sl_status_t. See [Status Codes] (https://docs.silabs.com/gecko-platform/latest/platform-common/status) and [Additional Status Codes] (../wiseconnect-api-reference-guide-err-codes/sl-additional-status-errors) for details.
Note
In FCC-certified modules, this API will trigger an error SL_STATUS_SI91X_FEATURE_NOT_AVAILABLE if used, except when in SL_WIFI_TRANSMIT_TEST_MODE mode.