Files
esp-idf/examples/wifi/.build-test-rules.yml
T
Sarvesh Bodakhe 93347494b3 feat(wifi): Add support for Wi-Fi Aware: Unsynchronized Service Discover (USD)
1.  Remove redundant fixes in upstream wpa_supplicant for USD
    - Upstream supplicant has mostly fixed the issues regarding the
      unnecessary resetting pauseStateTimeout.
    - Upstream supplicant still needs one fix to avoid resetting the
      pauseStateTimeout when subscribe message is received from the peer
      which had triggered the pauseStateTimeout previously.

2.  Replace array-based channel list with bitmap for NaN-USD

    Use `wifi_scan_channel_bitmap_t` to represent the channel list for NaN-USD
    publisher and subscriber configurations. This replaces the previous approach
    that used a large array to store allowed channels.

    Also aligns with internal scan bitmap conventions across Wi-Fi stack.

3.  call esp_wifi_nan_stop() after USD exchange or STA stop

    Ensure esp_wifi_nan_stop() is called after publish/subscribe activity
    completes or when WIFI_EVENT_STA_STOP is received. This prevents NAN stop
    errors due to inactive interface. NaN-USD currently uses STA interface
    for Tx/Rx.

4.  Fix task watchdog timer triggered in active USD subscriber:

    As both USD supplicant and offchan TX component gets executed
    in the wifi task, it created a deadlock like scenario where offchan TX
    done callback was never getting executed and supplicant 'nan_de_timer'
    keeps running but failing to send any subscribe frame.

5.  Make sure that device is able to recieve action management frames
    of size more than 1400 bytes.

6.  Update proto field in SSI to match Wi-Fi Aware (NaN) spec format

    The 'proto' field in the 'wifi_nan_wfa_ssi_t' structure previously used an
    enum (wifi_nan_svc_proto_t), resulting in a 32-bit field. According to
    the Wi-Fi NAN Specification (Table 5.7), this field must be a single
    octet (8 bits). This commit updates the type to uint8_t to ensure
    compliance with the specification.

    This mismatch previously triggered warnings but did not cause functional
    errors.

7.  Set `allow_broadcast` to true in USD Remain on channel

    This enables the peer discovery as USD uses NAN-Network Multicast BSSID
    as A3 address in publish frames.

8.  Implement custom channel<->frequency conversion for NAN-USD

    NaN-USD only permits 20 MHz bandwidth channels in the 2.4 GHz and 5 GHz bands
    (as per section 4.5.3 of the Wi-Fi Aware Specification v4.0). To avoid linking
    a large portion of upstream supplicant code for frequency-to-channel and
    channel-to-frequency conversion, implement minimal custom helper functions.

9.  Limit NAN_DE_MAX_SERVICE to 2 for ESP_SUPPLICANT

10. Note: Upstream clamps negative `os_reltime` deltas to zero in `nan_de_srv_time_to_next()`,
    but our ESP_SUPPLICANT port keeps `os_time_t` unsigned, so that guard just provokes a
    compiler warning. We skip it for now because the scheduling loop validates past timestamps
    before computing the diff.

Co-authored-by: Shyamal Khachane <shyamal.khachane@espressif.com>
2025-10-20 12:18:28 +05:30

157 lines
3.6 KiB
YAML

# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
.wifi_depends_default: &wifi_depends_default
depends_components:
- esp_wifi
- esp_phy
- esp_netif
- esp_event
- esp_coex
- wpa_supplicant
- mbedtls
- nvs_flash
- console
- esp_pm
- protocol_examples_common
examples/wifi:
<<: *wifi_depends_default
enable:
- if: IDF_TARGET == "esp32h2"
disable:
- if: (SOC_WIFI_SUPPORTED != 1) and (SOC_WIRELESS_HOST_SUPPORTED != 1)
examples/wifi/fast_scan:
enable:
- if: IDF_TARGET == "esp32h2"
disable:
- if: (SOC_WIFI_SUPPORTED != 1) and (SOC_WIRELESS_HOST_SUPPORTED != 1)
examples/wifi/ftm:
<<: *wifi_depends_default
disable:
- if: SOC_WIFI_FTM_SUPPORT != 1
reason: requires hardware support
examples/wifi/getting_started:
<<: *wifi_depends_default
enable:
- if: INCLUDE_DEFAULT == 1
disable:
- if: (SOC_WIFI_SUPPORTED != 1) and (SOC_WIRELESS_HOST_SUPPORTED != 1) and (IDF_TARGET != "esp32h2")
disable_test:
- if: IDF_TARGET in ["esp32p4", "esp32h2"]
temporary: true
reason: lack of runners
depends_filepatterns:
- examples/wifi/getting_started/**/*
examples/wifi/iperf:
enable:
- if: INCLUDE_DEFAULT == 1
disable:
- if: (SOC_WIFI_SUPPORTED != 1) and (SOC_WIRELESS_HOST_SUPPORTED != 1) and (IDF_TARGET != "esp32h2")
- if: IDF_TARGET in ["esp32p4"] and CONFIG_NAME in ["defaults", "99"]
disable_test:
- if: IDF_TARGET not in ["esp32"]
temporary: true
reason: lack of runners
depends_components:
- esp_wifi
- esp_phy
- esp_netif
- lwip
- esp_event
- esp_coex
- wpa_supplicant
examples/wifi/itwt:
<<: *wifi_depends_default
disable:
- if: SOC_WIFI_HE_SUPPORT != 1
examples/wifi/power_save:
<<: *wifi_depends_default
disable:
- if: SOC_WIFI_SUPPORTED != 1
temporary: true
reason: requires hardware support
depends_components:
- esp_wifi
- esp_phy
- esp_netif
- lwip
- esp_event
- esp_coex
- wpa_supplicant
- esp_driver_uart
examples/wifi/scan:
enable:
- if: IDF_TARGET == "esp32h2"
disable:
- if: (SOC_WIFI_SUPPORTED != 1) and (SOC_WIRELESS_HOST_SUPPORTED != 1)
examples/wifi/softap_sta:
enable:
- if: IDF_TARGET == "esp32h2"
disable:
- if: (SOC_WIFI_SUPPORTED != 1) and (SOC_WIRELESS_HOST_SUPPORTED != 1)
examples/wifi/wifi_aware/nan_console:
disable:
- if: SOC_WIFI_NAN_SUPPORT != 1
reason: targets esp32c3, esp32s3, esp32c2 and esp32c6 are not supported
depends_components:
- esp_wifi
- esp_phy
- esp_netif
- lwip
- esp_event
- esp_coex
- wpa_supplicant
- mbedtls
- nvs_flash
depends_filepatterns:
- examples/system/console/advanced/components/**/*
examples/wifi/wifi_aware/nan_publisher:
disable:
- if: SOC_WIFI_NAN_SUPPORT != 1
reason: targets esp32c3, esp32s3, esp32c2 and esp32c6 are not supported
depends_components:
- esp_wifi
- esp_phy
- esp_netif
- lwip
- esp_event
- esp_coex
- wpa_supplicant
- mbedtls
- nvs_flash
examples/wifi/wifi_aware/nan_subscriber:
disable:
- if: SOC_WIFI_NAN_SUPPORT != 1
reason: targets esp32c3, esp32s3, esp32c2 and esp32c6 are not supported
depends_components:
- esp_wifi
- esp_phy
- esp_netif
- lwip
- esp_event
- esp_coex
- wpa_supplicant
- mbedtls
- nvs_flash
examples/wifi/wifi_aware/usd_publisher:
<<: *wifi_depends_default
disable:
- if: SOC_WIFI_SUPPORTED != 1
examples/wifi/wifi_aware/usd_subscriber:
<<: *wifi_depends_default
disable:
- if: SOC_WIFI_SUPPORTED != 1