Radio#

Functions#

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.

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.

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.

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.

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.

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.

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.

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.

sl_status_t
sl_wifi_set_listen_interval(sl_wifi_interface_t interface, sl_wifi_listen_interval_t listen_interval) SL_DEPRECATED_API_WISECONNECT_3_5

Set the Wi-Fi client interface listen interval.

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.

sl_status_t
sl_wifi_get_listen_interval(sl_wifi_interface_t interface, sl_wifi_listen_interval_t *listen_interval) SL_DEPRECATED_API_WISECONNECT_3_5

Get the Wi-Fi client listen interval.

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.

sl_status_t
sl_wifi_update_gain_table(uint8_t band, uint8_t bandwidth, const uint8_t *payload, uint16_t payload_length) SL_DEPRECATED_API_WISECONNECT_3_5

Assign the user configurable channel gain table entries in different regions to the module from the user.

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.

sl_status_t
sl_wifi_set_11ax_config(uint8_t guard_interval)

Configure the 11ax params.

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.

sl_status_t
sl_wifi_transmit_test_stop(sl_wifi_interface_t interface)

Stop the transmit test.

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.

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.

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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns

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.

Parameters
TypeDirectionArgument NameDescription
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

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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns


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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns


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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns


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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns


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.

Parameters
TypeDirectionArgument NameDescription
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

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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns


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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns

Note


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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns

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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns

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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns

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.

Parameters
TypeDirectionArgument NameDescription
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:
No Of Regions,
Region code,
No Of Channels,

Rate

11b Gain Value

11g Gain Value

11n Gain Value

11ax Gain Value

x

x

x

x

x

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

  • Pre-conditions: sl_wifi_init should be called before this API.

Note

    1. 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.

    1. 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.

    2. 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.

    3. 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.

    4. 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.

    5. 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.

    6. In the 2.4 GHz band, 40 MHz is not supported.

    7. Executing this API overwrites calibration values in certified modules.

    8. 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.

    9. Below are the default gain tables:

      • Si917 IC OPNs:
        Number of regions: 4

        Region

        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: 6

        Region

        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.

Parameters
TypeDirectionArgument NameDescription
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:
No Of Regions,
Region code,
No Of Channels,

Rate

11b Gain Value

11g Gain Value

11n Gain Value

11ax(SU Gain)

11ax(TB Gain)

x

x

x

x

x

x

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

  • Pre-conditions: sl_wifi_init should be called before this API.

Note

    1. 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.

    2. 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.

    3. 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.

    4. 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.

    5. 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.

    6. In the 2.4 GHz band, 40 MHz is not supported.

    7. Executing this API overwrites calibration values in certified modules.

    8. 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.

Parameters
TypeDirectionArgument NameDescription
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.

Returns


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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns

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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns

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.

Parameters
TypeDirectionArgument NameDescription
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:

Returns


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.

Parameters
TypeDirectionArgument NameDescription
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.

Returns

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.