xiehang 1ef10dc284 esp_wifi: Modify ESP_IF_WIFI_STA to WIFI_IF_STA %!s(int64=5) %!d(string=hai) anos
..
components 1ef10dc284 esp_wifi: Modify ESP_IF_WIFI_STA to WIFI_IF_STA %!s(int64=4) %!d(string=hai) anos
main 3967e1b6d2 vfs: support vfs uart set line endings with specified uart number (release/v4.2) %!s(int64=5) %!d(string=hai) anos
CMakeLists.txt 5b2fa1a5ad build_app: make multi target support readable %!s(int64=5) %!d(string=hai) anos
Makefile 03d11913a2 ble_mesh: add ble mesh coex test example %!s(int64=5) %!d(string=hai) anos
README.md 5b2fa1a5ad build_app: make multi target support readable %!s(int64=5) %!d(string=hai) anos
partitions.csv 03d11913a2 ble_mesh: add ble mesh coex test example %!s(int64=5) %!d(string=hai) anos
sdkconfig.defaults 03d11913a2 ble_mesh: add ble mesh coex test example %!s(int64=5) %!d(string=hai) anos

README.md

Supported Targets ESP32

Example of BLE Mesh and TCP Server/Client Coexistence

This example introduces how to test the basic functions of BLE Mesh data interface and TCP Server/Client Coexistence. BLE Mesh data interface is GAP scanning and advertising.

There are two working modes here:

  • In automatic mode, the program coordinates three development boards working through a synchronization mechanism.

  • In manual mode, you will work with three development boards via commands

Test Preparation

  • Before running the test, you need to prepare a router and three ESP32 development boards. This Example of BLE Mesh and TCP Server/Client Coexistence has the following three items, and any of the three development boards is for running one specific item.

    • ble_dev : Run only the BLE program.
    • coex_dev: Run BLE and Wi-Fi program.
    • wifi_dev: Run only the Wi-Fi program.

Note: If you want better performance in BLE and WiFi coexistence, you should use a development board with PSRAM that could run a coexistence program. Such as ESP32_LyraT, ESP32-WROVER-B and etc.

  • The following structure shows the parameters you need to configure. And usually, there are two methods for configuration, i.e. configuring during initialization or configuring with the command env.

    coex_test_env_t test_env = {
    #if defined(CONFIG_EXAMPLE_MANAUL)
    .ap_ssid = CONFIG_EXAMPLE_WIFI_SSID,
    .ap_password = CONFIG_EXAMPLE_WIFI_PASSWORD,
    #endif
    #if defined(CONFIG_EXAMPLE_COEX_ROLE)
    .ap_ssid = CONFIG_EXAMPLE_WIFI_SSID,
    .ap_password = CONFIG_EXAMPLE_WIFI_PASSWORD,
    #endif
    .test_port = "8080",
    .server_ip = "192.168.3.32",
    .duration = "120000",
    .is_start = false,
    };
    

Run Test Case Manually

Configure to Manual Mode via Example Configuration --->run mode (manual)

The meaning of the numeric argument of the command run_tc is as follows:

| id | case name | description | |:-:|:-|:-| | 0 | wifi_tcp_tx_throughput| Test the case of Wi-Fi tcp tx, which will create a tcp client that will continuously send data to the tcp server. | | 1 |wifi_tcp_rx_throughput| Test the case of Wi-Fi tcp rx, which will create a tcp server that will continuously receive data from the tcp client. | | 2 | ble_adv | Test the case of BLE advertising. | | 3 | ble_scan| Test the case of BLE Scan.|

Case 1: tcp tx + scan

  1. wifi_dev: run_tc -w 1
  2. coex_dev: env -s -k server_ip -v 192.168.3.34 run_tc -w 0 -b 3
  3. ble_dev : run_tc -b 2

Case 2: tcp rx + scan

  1. coex_dev: run_tc -w 1 -b 3
  2. wifi_dev: env -s -k server_ip -v 192.168.3.34 run_tc -w 0
  3. ble_dev : run_tc -b 2

Case 3: tcp tx + adv

  1. wifi_dev: run_tc -w 1
  2. coex_dev: env -s -k server_ip -v 192.168.3.13 run_tc -w 0 -b 2
  3. ble_dev : run_tc -b 3

Case 4: tcp rx + adv

  1. coex_dev: run_tc -w 1 -b 2
  2. wifi_dev: env -s -k server_ip -v 192.168.3.34 run_tc -w 0
  3. ble_dev : run_tc -b 3

Run Test Case By Automation

Configure to Automatic Mode via Example Configuration --->run mode (auto)

Coexistence device configuration

  1. Select a development board as coexistence role by Example Configuration --->select role (run device as coex role)
  2. Select a test case by Example Configuration --->select case.
  3. There are four types of cases:
    • TCP TX and BLE ADV: The TCP client will be created on the coexistence device, and bluetooth will start advertising when the Wi-Fi is running tx throughput program.
    • TCP RX and BLE ADV: The TCP server will be created on the coexistence device, and bluetooth will start advertising when the Wi-Fi is running rx throughput program.
    • TCP TX and BLE SCAN: The TCP client will be created on the coexistence device, and bluetooth will start scanning when the Wi-Fi is running tx throughput program.
    • TCP RX and BLE SCAN: The TCP server will be created on the coexistence device, and bluetooth will start scanning when the Wi-Fi is running rx throughput program.

Bluetooth device configuration

  1. Select a development board as bluetooth role by select role (run device as bluetooth role)

Wi-Fi device configuration

  1. Select a development board as bluetooth role by select role (run device as wifi role)

Coexistence Configuration

In theory, the performance of BLE and Wi-Fi coexistence will drop to half of the performance in BLE Only mode or Wi-Fi Only mode.

  • ESP32 working frequency:

    • Component config ---> ESP32-specific ---> CPU frequency (240 MHz)
  • ESP32 external PSRAM

    • Component config ---> ESP32-specific ---> Support for external, SPI-connected RAM
    • Devices that do not support PSRAM cannot open this option!
  • ESP32 coexistence mode

    • Component config ---> Wi-Fi ---> WiFi/Bluetooth coexistence performance preference (Balance)